2013-04-17 103 views
1

我想要一个本地玩家的朋友也玩我的游戏的列表。获取所有玩这个游戏的游戏中心朋友

我想过做一个查询每个排行榜一位朋友的分数,并找到不同的球员:

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表示设置类别为零应返回“以前由游戏报告的所有分数”。我想这意味着游戏的运行实例,而不是全球应用程序意义上的游戏?

想要获得我想要的结果的有效方法的任何想法?

+0

http://stackoverflow.com/questions/8336971/game-center-friend-list –

+0

@SumitMundra谢谢,但那是所有有史以来的朋友。我只想要那些也拥有这款游戏的玩家(“曾经记录过这款游戏的排行榜评分”是一个可以接受的替代品)。 – tenpn

回答

0

尝试类似的代码当类别设置为nil时,我获得的不仅仅是本地玩家的结果,但我似乎只获得默认排行榜的结果。我认为这是有道理的,因为要求所有排行榜的所有结果最终都会包含大量数据,但这不是文档将导致您相信的事情。就个人而言,为了解决类似的问题,我只是询问其中每个至少玩过一次的玩家应该有一个入口而不是每个排行榜的排行榜之一。似乎奇怪的是,没有更好的方式来获取这些信息,因为Game Center本身意识到谁下载了应用程序。

编辑:看起来range = NSMakeRange(1, 100);是一个硬限制,考虑到你可以有多达500个朋友,这意味着这仍然不是一个有用的测试,让所有的朋友谁也玩游戏。但是,您可以创建一个包含playerID列表的排行榜,因此:

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

将是一种处理方法。我已经用500个玩家ID的哑数组加上我的朋友列表测试了它,并且它的工作原理,但是如果可以用500个真正的朋友测试,我会感觉更好 - 我只是没有时间做商场!

+0

即使没有明确的答案,一些好的观点,谢谢。 – tenpn