iOS 10中的游戏中心挑战

17
我已经实现了游戏中心的成就和排行榜功能,现在正在处理挑战。我的印象是我不需要添加任何额外的代码 - 如果我有成就或排行榜,玩家将能够向他们的朋友发送挑战。但是,在iOS10中,您不再能够将玩家添加为好友 - 挑战通过iMessages处理。问题是 - 我在GKViewController屏幕上没有看到该功能。如果您选择成就/排行榜分数,则可以点击“挑战好友”,但它只建议您已经在好友列表中而不是在联系人列表中的玩家。Apple还弃用了GKChallengesViewController,因此我不确定该如何操作。
有人知道如何在iOS 10中将iMessage挑战功能添加到游戏中心吗?
更新:我已经看到该功能存在于GKMatchmakerViewController中,但那似乎是针对多人游戏类型的。我仍然不确定如何使用它来发送挑战。

你可以在这里找到所有可用的工作函数。https://developer.apple.com/reference/gamekit - Johannes Knust
1个回答

2

来自Apple文档

发起挑战不会向发起者显示用户界面;这需要您自己实现的代码

还有一些示例介绍如何发起挑战以及如何查找可以邀请的玩家,例如:

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

...or:

- (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];
    }];
}

看起来你仍然只能邀请已经加入游戏中心的玩家,即不能从联系人列表中随意选择“联系人”(这是有道理的),但这只是一种假设。

感谢您的帖子。我曾经以为根据2016年WWDC视频,挑战可以通过您的联系人列表而不是您的Game Center好友列表发送,因为后者已无法添加。 - claassenApps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接