Google Play游戏不允许用户加入回合制匹配

时间:2014-07-15 04:39:59

标签: ios objective-c google-play-services google-play-games

我创建一个回合制比赛,然后按如下方式邀请单个对手:

GPGMultiplayerConfig *config = [[GPGMultiplayerConfig alloc] init];
// We will automatically match with one other player
config.invitedPlayerIds = @[self.opponent.googlePlayID];
config.minAutoMatchingPlayers = 0;
config.maxAutoMatchingPlayers = 0;

[GPGTurnBasedMatch
 createMatchWithConfig:config
 completionHandler:^(GPGTurnBasedMatch *match, NSError *error) {
     if (error) {
         completion(NO);
         return;
     }
}];

此设备放置第一个动作并将下一个转弯传递给我的对手设备后,我的对手设备会收到推送通知以加入比赛。我加入回应。此时此邀请设备的self.match.userMatchStatusinvited

[self.match joinWithCompletionHandler:^(NSError *error) {
    if (error) {
        completion(NO);
        return;
    }
}];

这不会给出错误。致电self.match.isMyTurn后,我回来YES。致电self.match.userMatchStatus会给出invited的状态;不是joined。文档(顺便说一下,这是非常差的)说明了这个joinWithCompletionHandler:方法:

  

加入已邀请玩家的回合制比赛。

即使在此之后的3秒内添加发送时间延迟,为了给它一个机会,我发现它仍然设置为invited。调用其他方法(例如takeTurnWithNextParticipantId:data:results:completionHandler:)会因完全未记录的错误而失败:

  

错误Domain = com.google.GooglePlayGames Code = 3"操作无法执行   完成。 (com.google.GooglePlayGames错误3。)"

这是指向Google文档的链接:

https://developers.google.com/games/services/ios/api/interface_g_p_g_turn_based_match

1 个答案:

答案 0 :(得分:0)

我猜你传递的是玩家ID,而不是参与者ID来传递参加者训练。错误代码3(和http响应代码400)意味着传递参数中的某些内容无效,在我的情况下,它是我设置错误的参与者ID。