cla*_*pps 16 ios game-center sprite-kit game-center-leaderboard swift
我已经实现了游戏中心功能,如成就和排行榜,现在我正在应对挑战.我的印象是我没有添加任何额外的代码 - 如果我有成就或排行榜,玩家将能够向他们的朋友发送挑战.但现在,在iOS10中,您不再能够将玩家添加为朋友 - 挑战通过iMessages处理.问题是 - 我没有在GKViewController屏幕中的任何地方看到该功能.如果您选择成就/排行榜分数,您可以点击"挑战朋友",但它只会建议您在朋友列表中而不是在联系人列表中的玩家.Apple也弃用了GKChallengesViewController,所以我不知道该怎么做才能看到它.
有谁知道如何在iOS 10中为游戏中心添加iMessage Challenges功能?
更新:我已经看到这个功能存在于GKMatchmakerViewController中,但这似乎适用于多人类型的东西.我仍然不确定如何使用它来发送挑战.
来自苹果文档:
发出挑战不会向发出挑战的玩家显示用户界面;这是您需要自己实现的代码。
还有一些关于如何发出挑战以及如何找到可以邀请的玩家的示例,例如:
- (void) challengePlayersToCompleteAchievement: (GKAchievement*) achievement
{
[achievement selectChallengeablePlayers:[GKLocalPlayer localPlayer].friends withCompletionHandler:^(NSArray *challengeablePlayerI, NSError *error) {
if (challengeablePlayers)
{
[self presentChallengeWithPreselectedPlayers: challengeablePlayers];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
...或者:
- (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];
}];
}
Run Code Online (Sandbox Code Playgroud)
从表面上看,您仍然只能邀请已经是游戏中心一部分的玩家,即联系人列表中没有任意“联系人”(这是有道理的),但这只是一个假设。