对于没有得分的玩家,永远不会调用游戏中心排行榜得分请求的完成处理程序

时间:2014-04-17 08:59:22

标签: ios objective-c game-center gamekit

我的游戏实现了一个自定义用户界面,列出了本地玩家的朋友。

我还有一个游戏中心排行榜。

当我的游戏列出玩家时,它还会尝试使用以下代码从排行榜加载他们的分数:

    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。

1 个答案:

答案 0 :(得分:0)

无法帮助,因为排行榜中没有得分条目,所以确实不会调用完成处理程序。虽然我仍然不明白为什么它不会只是返回一个错误的说法。

由于自定义好友列表只显示统计信息,因此我只为每个统计信息添加了一个加载图标。如果处理程序的调用时间不超过10秒,我认为没有分数条目,只显示0。