GKMatchmakerViewController失败

时间:2015-11-24 19:38:02

标签: ios itunesconnect game-center

在我的应用中,我可以看到使用iTunesConnect创建的LeaderboardsAchievements的数据。我可以毫无问题地使用GKTurnBasedMatchmakerViewController。但是,如果我使用GKMatchmakerViewController,在选择了一位朋友邀请之后,GKMatchmakerViewController会立即返回“失败”#34;指示(见图)。

这不是全部。如果我使用另一个bundle id(已经在AppStore上的那个)来测试,那么GKMatchmakerViewController将在这个应用程序上运行。

我还尝试创建新的个人资料/包ID,应用ID等。但问题仍然存在。

有什么建议吗?

修改:失败时调用了connectionWithPlayerFaileddidFailWithError方法。

编辑2:

此消息显示在设备日志中:

  

无法使用名称bootstrap_look_up端口   com.apple.GameCenterUI.GameCenterMatchmakerExtension.gsEvents:未知   错误代码(1102)无法设置   com.apple.GameCenterUI.GameCenterMatchmakerExtension作为键盘焦点

编辑3:"立即播放" (自动匹配)工作正常。

enter image description here

编辑:使用的代码

- (void)findMatchWithMinPlayers:(int)minPlayers maxPlayers:(int)maxPlayers
                 viewController:(UIViewController *)viewController
                       delegate:(id<GameKitHelperDelegate>)delegate {

    if (!_enableGameCenter) return;
    MyNSLogSys;
    _matchStarted = NO;
    self.match = nil;
    _delegate = delegate;
//    [viewController dismissViewControllerAnimated:NO completion:nil];
    GKMatchRequest *request = [[GKMatchRequest alloc] init];
    request.minPlayers = minPlayers;
    request.maxPlayers = maxPlayers;

    GKMatchmakerViewController *mmvc =
    [[GKMatchmakerViewController alloc] initWithMatchRequest:request];
    mmvc.matchmakerDelegate = self;

    [viewController presentViewController:mmvc animated:YES completion:nil];

}

// The user has cancelled matchmaking
- (void)matchmakerViewControllerWasCancelled:(GKMatchmakerViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

// Matchmaking has failed with an error
- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFailWithError:(NSError *)error {
    [viewController dismissViewControllerAnimated:YES completion:nil];
    NSLog(@"Error finding match: %@", error.localizedDescription);
}

// A peer-to-peer match has been found, the game should start
- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match {
    [viewController dismissViewControllerAnimated:YES completion:nil];
    self.match = match;
    match.delegate = self;
    if (!_matchStarted && match.expectedPlayerCount == 0) {
        NSLog(@"Ready to start match!");
    }
}

1 个答案:

答案 0 :(得分:0)

我之前见过这个。解决这个问题的方法是通过游戏中心成为朋友。在那之后,邀请应该工作。

此外,在iOS9中,不再有沙箱。因此,如果您尝试使用应用程序的调试版本进行连接,则通知将打开游戏中心和应用程序商店,而不是直接转到您的应用程序。您可以通过在发布模式而不是调试模式下运行来解决这个问题。