首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GameCenter邀请处理程序

GameCenter邀请处理程序
EN

Stack Overflow用户
提问于 2011-01-09 21:18:31
回答 2查看 4.9K关注 0票数 6

尝试实现一个多人游戏。使用来自Game Center - Sending and receiving data的示例。

一切似乎都很好,但在apple documentation中也有关于邀请处理程序的说法。

代码语言:javascript
复制
[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {
   // Insert application-specific code here to clean up any games in progress.
   if (acceptedInvite) {
        GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] autorelease];
        mmvc.matchmakerDelegate = self;
        [self presentModalViewController:mmvc animated:YES];
    } else if (playersToInvite) {
        GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
        request.minPlayers = 2;
        request.maxPlayers = 4;
        request.playersToInvite = playersToInvite;

        GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
        mmvc.matchmakerDelegate = self;
        [self presentModalViewController:mmvc animated:YES];
    }
};

问题很简单:我不知道在哪里添加这段代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-09 21:25:36

如文档中所述

应用程序应该在应用程序启动后尽早设置邀请处理程序;设置处理程序的合适位置是在您提供的完成块中,该块在本地播放器通过身份验证后执行。

在您的代码中的某个地方,您应该已经使用如下内容对本地播放器进行了身份验证

代码语言:javascript
复制
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
    if (error == nil) {
        // Insert your piece of code here
    } else {
        // Handle the error
    }
}];

希望这能有所帮助

票数 11
EN

Stack Overflow用户

发布于 2013-04-01 04:19:12

我的代码如下,它工作得很好。在authenticateLocalUser中,添加以下代码:

代码语言:javascript
复制
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {  // Add for invite handler
        // Insert application-specific code here to clean up any games in progress.
        if (acceptedInvite) {
            GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] ;
            mmvc.matchmakerDelegate = self;
            // [self presentModalViewController:mmvc animated:YES];
            [_delegate matchStart];
        } else if (playersToInvite) {
            GKMatchRequest *request = [[GKMatchRequest alloc] init] ;
            request.minPlayers = 2;
            request.maxPlayers = 2;
            request.playersToInvite = playersToInvite;

            GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request] ;
            mmvc.matchmakerDelegate = self;
            // [self presentModalViewController:mmvc animated:YES];
            [_delegate matchStart];
        }
    };

    [self callDelegateOnMainThread:@selector(processGameCenterAuth:) withArg:NULL error:error];
}];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4639284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档