如何检测 GameKit 自动匹配是否失败?
等待 2 分钟后,即使没有找到自动匹配的玩家,也会调用GKMatchmakerViewControllerDelegate matchmakerViewController:didFindMatch:。游戏中心的喇叭声甚至可以播放。我确信实际上没有找到任何玩家,因为这发生在 Game Center Sandbox 中,没有其他人可以访问我的应用程序。
当我尝试加载玩家*时,我收到一个错误,但必须有更好的方法来检查自动匹配失败,对吧?自动匹配失败时,有没有办法防止喇叭声凯旋?
*自动匹配失败时加载玩家显示错误:
[GKPlayer loadPlayersForIdentifiers:self.match.playerIDs withCompletionHandler:^(NSArray *players, NSError *error)
{
LOG_DEBUG(@"loadPlayersForIdentifiers completion handler called");
if (error != nil)
{
LOG_ERROR(@"Error loading player information: %@", error);
}
}];
这显示以下错误:
加载播放器信息时出错:Error Domain=GKErrorDomain Code=17 “请求的操作无法完成,因为一个或多个参数无效。” UserInfo=0xb183a70 {NSLocalizedDescription=请求的操作无法完成,因为一个或多个参数无效。}
这是我用来调出 GameKit 比赛用户界面的代码:
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.defaultNumberOfPlayers = 2;
GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];
mmvc.matchmakerDelegate = self;
[self presentViewController:mmvc animated:YES completion:nil];
对于完整的上下文,我的整个应用程序是开源的,主视图控制器在这里:https ://github.com/jdimatteo/TeamRun/blob/master/TeamRun/TeamRun/TeamRunViewController.m
任何帮助是极大的赞赏!