我创建一个回合制比赛,然后按如下方式邀请单个对手:
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.userMatchStatus
为invited
:
[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
答案 0 :(得分:0)
我猜你传递的是玩家ID,而不是参与者ID来传递参加者训练。错误代码3(和http响应代码400)意味着传递参数中的某些内容无效,在我的情况下,它是我设置错误的参与者ID。