就 Apple 的游戏中心 apis 而言,我将如何请求和取回特定排行榜和 Timescope 的本地用户时间和排名?

  • 用于排行榜 X(即指定板 - 例如 Level12_BestTime),对于给定的 TimeScope
  • 返回本地玩家当前:
    a) 时间,例如12.3秒
    b) 排名(与好友),例如12日
    c) 排名(所有玩家)例如第123话

    最佳答案

    复制自 Game Center Programming Guide :

    GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
    if (leaderboardRequest != nil)
    {
        leaderboardRequest.playerScope = GKLeaderboardPlayerScopeGlobal; // or GKLeaderboardPlayerScopeFriendsOnly
        leaderboardRequest.timeScope = GKLeaderboardTimeScopeToday; // or GKLeaderboardTimeScopeWeek, GKLeaderboardTimeScopeAllTime
        leaderboardRequest.identifier = @"Combined.LandMaps" // Name of the leaderboard
        leaderboardRequest.range = NSMakeRange(1,10); // How many results to get
        [leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
            if (error != nil)
            {
                // Handle the error.
            }
            if (scores != nil)
            {
                // Process the score information.
            }
            }];
    }
    

    要获取特定用户的信息:
     GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] initWithPlayerIDs: match.playerIDs];
    

    在这两种情况下,用户的分数都存储在 localPlayerScore 中,所有分数都存储在分数中。

    然而,排名可能有问题。您最多只能获得 100 分,因此如果排行榜非常大,则可能需要进行大量调用。 localPlayerScore 确实包含排名值,但这仅与当前分数列表相关。基本上,您必须遍历整个排行榜才能找到用户的位置。

    关于ios - 如何从 Game Center 获取特定排行榜和时间范围的用户时间和排名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19485611/

  • 10-14 23:16