3

ゲームのフロント ページに非常に小さなリーダーボードのスニペットを表示したいと思います。基本的には、あなたのスコアと、あなたの周りにいる 2 人の友人のスコア (あなたのスコアの上と下) を表示します。私はアップルのドキュメントを読みましたが、すべての友達を指定し、すべての友達を確実に取得するために巨大な範囲を指定しない限り、これを行う方法がわかりません。特にユーザーがモバイルを使用している可能性があるため、このリストを取得するのは非効率的です。友達のリスト全体をダウンロードしてからフィルタリングせずに、どうすれば目的を達成できますか?

これが私が現在持っているものです(フィルタリングなし)

GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil)
{
    leaderboardRequest.playerScope = GKLeaderboardPlayerScopeFriendsOnly;
    leaderboardRequest.timeScope = GKLeaderboardTimeScopeAllTime;
    leaderboardRequest.category = @"HighScore";
    leaderboardRequest.range = NSMakeRange(1,100);
    [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
        if (error != nil)
        {
            // Handle the error.
        }
        if (scores != nil)
        {
            GKScore* myScore = leaderboardRequest.localPlayerScore;

            NSLog(@"Me: %@: %d",myScore.playerID, (int)myScore.value);

            // Process the score information - here I would filter
            for (GKScore* score in scores) 
            {
                NSLog(@"%@: %d",score.playerID, (int)score.value);
            }
        }
    }];
}
4

1 に答える 1

0

次のコードが役立つ場合があります。

Game Center プログラミング ガイドより:
GKLeaderboard range : 特定の範囲内のスコアを選択できます。たとえば、範囲 [1,10] は、クエリによって見つかった最高 10 のスコアを返します。
GKScoreランク: リーダーボード検索の結果におけるスコアの位置。

ps。テストできませんでした。よろしくお願いします。

GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];

if (leaderboardRequest != nil)
{
    GKScore* myScore = leaderboardRequest.localPlayerScore;

    leaderboardRequest.playerScope = GKLeaderboardPlayerScopeFriendsOnly;
    leaderboardRequest.timeScope = GKLeaderboardTimeScopeAllTime;
    leaderboardRequest.category = @"HighScore";
    leaderboardRequest.range = NSMakeRange(myScore.rank-1, myScore.rank+1);

    [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
        if (error != nil)
        {
            // Handle the error.
        }
        else 
        {
            // ...
        }
    }];
}
于 2013-09-06T15:06:28.663 に答える