我已经实现了游戏中心功能,如成就和排行榜,现在我正在应对挑战。我的印象是我没有添加任何额外的代码 - 如果我有成就或排行榜,玩家将能够向他们的朋友发送挑战。但现在,在iOS10中,您不再能够将玩家添加为朋友 - 挑战通过iMessages处理。问题是 - 我没有在GKViewController屏幕中的任何地方看到该功能。如果您选择成就/排行榜分数,您可以点击“挑战朋友”,但它只会建议您在朋友列表中而不是在联系人列表中的玩家。 Apple还弃用了GKChallengesViewController,所以我不知道该怎么做才能看到。
有谁知道如何在iOS 10中向游戏中心添加iMessage挑战功能?
更新:我已经看到这个功能存在于GKMatchmakerViewController中,但这似乎适用于多人类型的东西。我仍然不确定如何使用它来发送挑战。
答案 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;从联系人列表(这是有道理的),但这只是一个假设。