Ios6 GKMatchRequest邀请未在其他设备中显示

Ios6 GKMatchRequest邀请未在其他设备中显示,ios6,game-center,gamekit,invitation,Ios6,Game Center,Gamekit,Invitation,多亏了iOS 6中GameKit API的更新,我终于能够以应有的方式实现基于回合的棋盘游戏,包括回合超时和更好的程序化比赛创建。然而,我遇到了一个我似乎无法解决的问题。我的愿望是让游戏中心对最终用户完全不可见地运行,这样一切都是编程的,并使用我自己的自定义界面。因此,我使用自己的自定义表视图来显示匹配项,而不是默认的GKTurnBasedMatchmakerViewController。现在,我可以使用-loadMatchesWithCompletionHandler:方法显示打开的匹配项。我

多亏了iOS 6中GameKit API的更新,我终于能够以应有的方式实现基于回合的棋盘游戏,包括回合超时和更好的程序化比赛创建。然而,我遇到了一个我似乎无法解决的问题。我的愿望是让游戏中心对最终用户完全不可见地运行,这样一切都是编程的,并使用我自己的自定义界面。因此,我使用自己的自定义表视图来显示匹配项,而不是默认的GKTurnBasedMatchmakerViewController。现在,我可以使用-loadMatchesWithCompletionHandler:方法显示打开的匹配项。我还使用一个自定义屏幕来创建一个匹配,直接创建自动匹配(这不是问题)和一个表视图来加载本地玩家的Game Center好友以供邀请。由于playerToInvite属性现在可以用playerID填充,这在iOS 6中是可能的

我的主要问题是如何处理收件人的邀请。我用以下代码发送邀请

-(void)invitarAmigoMio:(NSArray*)losAmigos
{

    GKMatchRequest *request = [[GKMatchRequest alloc] init];
    request.minPlayers = 2;
    request.maxPlayers = 2;
    request.defaultNumberOfPlayers=2;
    request.playersToInvite = losAmigos;
    request.inviteMessage = @"Your Custom Invitation Message Here";



    request.inviteeResponseHandler = ^(NSString *playerID, GKInviteeResponse
                                       response)
    {

        if (response==GKInviteeResponseAccepted)
        {
            NSLog(@"INVITACION ACEPTADA");
        }
        else
        {
            NSLog(@"INVITACION RECHAZADA");

        }
    };

}
我有一个代理来处理通知。当用户通过身份验证时,将启动以下代码

-(void)registroNotificaciones
{
    NSLog(@"registroNotificaciones");

    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite* acceptedInvite, NSArray *playersToInvite)
    {
        if(acceptedInvite != nil)
        {
            // Get a match for the invite we obtained...
            [[GKMatchmaker sharedMatchmaker] matchForInvite:acceptedInvite completionHandler:^(GKMatch *match, NSError *error)
             {
                 if(match != nil)
                 {
                     NSLog(@"match != nil: ");

                 }
                 else if(error != nil)
                 {
                     NSLog(@"ERROR: From matchForInvite: %@", [error description]);
                 }
                 else
                 {
                     NSLog(@"ERROR: Unexpected return from matchForInvite...");
                 }
             }];
        }
    };
    NSLog(@"FIN registroNotificaciones");

}
为什么不发送通知?或者不接收通知?是否有其他方法发送通知以邀请玩游戏?
我检查了一下,我的游戏中心沙盒帐户允许邀请,我不知道发生了什么事

我知道您正在寻找使用自定义显示,但我没有为此制作自己的视图控制器,而是使用GKMatchmakerViewController为我处理“发送”邀请,我想这就是您的代码中缺少的内容

这是我的代码,也许您可以尝试一下并检查GKMatchmakerViewController内部的工作方式(如果可能):


我的代码与您处理通知的代码(Registronotificacions)几乎相同,只要用户使用GameCenter进行身份验证,它就会立即执行,这也是应用程序启动时首先要做的事情之一,从您所说的来看,这段代码似乎工作正常,只是。希望有帮助

您几乎完成了创建邀请所需的全部工作;您只需将其与以下代码一起发送:

[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch* match, NSError *error) {
        if (error)
        {
           //Invite has not been sent
        }
        else if (match != nil)
        {
          //whatever you want to do when the receiver accepts the invite
        }
}];

游戏中心邀请函这几天不起作用,我不知道游戏中心沙盒服务器发生了什么。我在ios开发者论坛上读到了这一点,如果ios 7不推荐使用
.inviteHandler
,你为什么要使用它?如何通过另一种方式获得
gkivent*acceptedInvite
[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch* match, NSError *error) {
        if (error)
        {
           //Invite has not been sent
        }
        else if (match != nil)
        {
          //whatever you want to do when the receiver accepts the invite
        }
}];