2013-04-17 122 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