iOS 10中的游戏中心挑战

时间:2017-01-03 20:03:08

标签: ios swift sprite-kit game-center game-center-leaderboard

我已经实现了游戏中心功能,如成就和排行榜,现在我正在应对挑战。我的印象是我没有添加任何额外的代码 - 如果我有成就或排行榜,玩家将能够向他们的朋友发送挑战。但现在,在iOS10中,您不再能够将玩家添加为朋友 - 挑战通过iMe​​ssages处理。问题是 - 我没有在GKViewController屏幕中的任何地方看到该功能。如果您选择成就/排行榜分数,您可以点击“挑战朋友”,但它只会建议您在朋友列表中而不是在联系人列表中的玩家。 Apple还弃用了GKChallengesViewController,所以我不知道该怎么做才能看到。

有谁知道如何在iOS 10中向游戏中心添加iMessage挑战功能?

更新:我已经看到这个功能存在于GKMatchmakerViewController中,但这似乎适用于多人类型的东西。我仍然不确定如何使用它来发送挑战。

1 个答案:

答案 0 :(得分:1)

来自Apple Docs

  

发出挑战不会向发出挑战的玩家显示用户界面; 这是您需要自己实施的代码

还有一些关于如何发布挑战以及如何找到您可以邀请的玩家的示例,例如:

- (void) challengePlayersToCompleteAchievement: (GKAchievement*) achievement
{
    [achievement selectChallengeablePlayers:[GKLocalPlayer localPlayer].friends withCompletionHandler:^(NSArray *challengeablePlayerI, NSError *error) {
        if (challengeablePlayers)
        {
            [self presentChallengeWithPreselectedPlayers: challengeablePlayers];
        }
    }];
}

......或:

- (void) challengeLesserMortalsForScore: (int64_t) playerScore inLeaderboard: (NSString*) leaderboard
{
    GKLeaderboard *query = [[GKLeaderboard alloc] init];
    query.leaderboardIdentifier = leaderboard;
    query.playerScope = GKLeaderboardPlayerScopeFriendsOnly;
    query.range = NSMakeRange(1,100);
    [query loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {
        NSPredicate *filter = [NSPredicate predicateWithFormat:@"value < %qi",playerScore];
        NSArray *lesserScores = [scores filteredArrayUsingPredicate:filter];
        [self presentChallengeWithPreselectedScores: lesserScores];
    }];
}

从它的外观来看,你仍然只能邀请已经是游戏中心一部分的玩家,即没有随意的联系人#34;从联系人列表(这是有道理的),但这只是一个假设。