我正在创建一个游戏中心游戏 GKTurnBasedMatch
火柴。我遇到了问题 readonly
matchData
在...上的财产 GKTurnBasedMatch
似乎没有正确存储在Game Center服务器上。
我在用着 这个StackOverflow的答案 在...上生成md5校验和 matchData
NSData
,无论是在Game Center服务器上发送还是从Game Center服务器接收。
我注意到我的校验和 NSData
我发送时的游戏数据对象 matchData
使用 GKTurnBasedMatch
实例方法 endTurnWithNextParticipants:turnTimeout:matchData:completionHandler:
。
然后对手使用获取比赛 GKTurnBasedMatch
的班级方法 loadMatchesWithCompletionHandler:
,当比赛到来时(没有错误),我再次记下校验和。
两个校验和不匹配,并且基于重建的游戏,得到的数据明显不相同。我已经检查了两个帐户 matchID
我的财产 GKTurnBasedMatch
对象是相同的。
我还进行了以下测试:
NSLog(@"matchID: %@ matchData checksum: %@",
match.matchID,
[Utilities md5StringFromData:match.matchData]);
// match is a valid `GKTurnBasedMatch` object.
[match endTurnWithNextParticipants: @[ opponent ] // My `GKTurnBasedParticipant` opponent
turnTimeout:600
matchData:data // This is a valid NSData object
completionHandler:^(NSError *error) {
if (nil != error) {
NSLog(@"%@", error);
} else {
NSLog(@"Successfully ended turn.");
[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error) {
if (nil != error) {
NSLog(@"Error getting matches: %@", [error localizedDescription]);
} else {
for (GKTurnBasedMatch *match in matches) {
NSLog(@"matchID: %@ matchData checksum: %@",
match.matchID,
[Utilities md5StringFromData:match.matchData]);
}
}
}];
}
}];
在此示例中,我使用数据结束转弯并立即从Game Center检索匹配,数据匹配。但是,当我访问 matchData
从对手的游戏中心账户和设备,他们不同。
有人遇到过这样的事吗?