gpt4 book ai didi

ios - Game Center GKTurnBasedMatch 问题与 matchData 属性

转载 作者:技术小花猫 更新时间:2023-10-29 10:49:44 29 4
gpt4 key购买 nike

我正在创建一个带有 GKTurnBasedMatch 比赛的 Game Center 游戏。我遇到一个问题,GKTurnBasedMatch 上的 readonly matchData 属性似乎没有正确存储在 Game Center 服务器上。

我正在使用 this StackOverflow answermatchData NSData 上生成 md5 校验和,无论是在发送到 Game Center 服务器还是从 Game Center 服务器接收时。

当我使用 GKTurnBasedMatch 实例方法 endTurnWithNextParticipants:turnTimeout 发送 matchData 时,我注意到我的 NSData 游戏数据对象的校验和:matchData:completionHandler:.

对手然后使用 GKTurnBasedMatch 的类方法 loadMatchesWithCompletionHandler: 检索匹配项,当匹配项到达时(没有错误),我再次记下校验和。

两个校验和不匹配,根据重构的游戏结果数据显然不相同。我已经检查了两个帐户,我的 GKTurnBasedMatch 对象上的 matchID 属性是相同的。

我还进行了以下测试:

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 检索匹配项,即数据匹配项。但是,当我从对手的 Game Center 帐户和设备访问 matchData 时,它们有所不同。

有人遇到过这样的事情吗?

最佳答案

我在 Apple's Dev Forums 上发现了解决方案.

事实证明,loadMatchesWithCompletionHandler: 并不总是获取最新的 matchData。为确保您拥有最新版本,请确保在 GKTurnBasedMatch 对象上调用 loadMatchDataWithCompletionHandler: 方法。

关于ios - Game Center GKTurnBasedMatch 问题与 matchData 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14735127/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com