【问题标题】:Get all game center friends who play this game获取所有玩此游戏的游戏中心好友
【发布时间】:2013-04-17 09:35:37
【问题描述】:

我想要一个本地玩家的所有朋友的列表,这些朋友也在玩我的游戏。

我想过在每个排行榜上查询每个朋友的分数,并找到不同的玩家:

GKLeaderboard *allScoresEver = [[GKLeaderboard alloc] init];
allScoresEver.playerScope = GKLeaderboardPlayerScopeFriendsOnly;
allScoresEver.range = NSMakeRange(1,100);
allScoresEver.category = nil;

[allScoresEver loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {

        // filter out distinct players, favouring scores from our leaderboard
        ...
    }];

...但这似乎只返回本地玩家的最后报告分数,而不是每个排行榜的每个分数,由朋友过滤。 docs say 将类别设置为 nil 应该返回“游戏之前报告的所有分数”。我猜这意味着游戏的运行实例,而不是全球应用意义上的游戏?

有什么想法可以有效地获得我想要的结果吗?

【问题讨论】:

标签: ios objective-c game-center


【解决方案1】:

尝试类似的代码当类别设置为nil 时,我得到的不仅仅是本地玩家的结果,但我似乎只得到默认排行榜的结果。我想这是有道理的,因为要求所有排行榜的所有结果最终可能会得到大量数据,但这并不是文档会让你相信的。就个人而言,为了解决类似的问题,我只是询问每个至少玩过一次的玩家应该有一个条目而不是每个排行榜的排行榜之一。似乎很奇怪,因为 Game Center 本身知道谁下载了该应用程序,所以没有更好的方法来获取此信息。

编辑:range = NSMakeRange(1, 100); 似乎是一个硬性限制,考虑到您最多可以有 500 个朋友,这意味着这仍然不是一个有用的测试来获得所有也玩游戏的朋友。但是,您可以使用 playerID 列表创建排行榜,因此:

GKLeaderboard *query = [[GKLeaderboard alloc] initWithPlayerIDs:[GKLocalPlayer localPlayer].friends];

将是处理它的一种方法。我已经用 500 个玩家 ID 加上最后我的朋友列表的虚拟数组对此进行了测试,它确实有效,但如果它可以用 500 个实际朋友进行测试,我会感觉更好——我只是没有时间制作全部!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多