我的游戏实现了一个自定义用户界面,列出了本地玩家的朋友。
我还有一个游戏中心排行榜。
当我的游戏列出玩家时,它还会尝试使用以下代码从排行榜加载他们的分数:
GKLeaderboard *request = [[GKLeaderboard alloc] initWithPlayerIDs:myFriends];
request.timeScope = GKLeaderboardTimeScopeAllTime;
request.identifier = @"my_leaderboards";
if (request != nil) {
[request loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
if (error != nil) {
NSLog(@"Error: %@",error.localizedDescription);
}
if (scores != nil) {
NSLog(@"WORKED: %@",scores);
}
}];
}
它运作得很好。
...除非其中一个朋友没有得分(例如,他们从未在第一时间玩过游戏)。当myFriends
中的某个玩家在排行榜中没有得分条目时,永远不会调用完成处理程序。没有错误,也没有报告得分,因为它从一开始就不会发生。
我在测试有两个朋友的帐户时意识到了这一点。一个朋友玩过这个游戏(所以他们有分数),而另一个朋友则没有。完成处理程序永远不会被调用。然后,我没有得分那个没有得分的家伙,并且完成处理程序工作正常,返回得分的朋友的分数。
我有点理解这种行为 - 毕竟,我要求它给我一个不存在的分数。但是有解决方法吗?如同,如果没有分数,告诉它返回0?
iOS 7。
答案 0 :(得分:0)
无法帮助,因为排行榜中没有得分条目,所以确实不会调用完成处理程序。虽然我仍然不明白为什么它不会只是返回一个错误的说法。
由于自定义好友列表只显示统计信息,因此我只为每个统计信息添加了一个加载图标。如果处理程序的调用时间不超过10秒,我认为没有分数条目,只显示0。