繁体   English   中英

获取所有玩此游戏的游戏中心朋友

[英]Get all game center friends who play this game

我想要列出也玩我的游戏的本地玩家的所有朋友的名单。

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

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
        ...
    }];

...但是这似乎只返回本地玩家最近报告的分数,而不是返回每个排行榜的分数(由朋友过滤)。 文档说将类别设置为nil应该返回“游戏先前报告的所有分数”。 我想这意味着正在运行的游戏实例,而不是全球应用程序意义上的游戏?

对获得所需结果的有效方法有任何想法吗?

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

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

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

将是处理它的一种方法。 我已经用一个包含500个玩家ID的虚拟数组进行了测试,最后添加了我的朋友列表,并且可以正常工作,但是如果可以与500个实际朋友进行测试,我会感觉更好-我只是没有时间做商场!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM