gpt4 book ai didi

iphone - 根据其 ID 加入特定的 GKTurnBasedMatch

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:34 24 4
gpt4 key购买 nike

我想允许我的游戏玩家加入特定的比赛。例如,PlayerA 通过 findMatchForRequest 启动了一个 GKTurnBasedMatch。然后他希望他的 friend 加入,但不是希望他的 friend 在游戏中心搜索他,PlayerA 想要将 matchID 发送给 PlayerB(例如,通过社交媒体或其他任何方式……我的目标实际上是让玩家使用自定义 URL 架构向 friend 发送游戏链接,例如,mygame://join/**matchID**)。

从这里开始,PlayerB 显然可以使用 GKTurnBasedMatch loadMatchWithID 加载比赛...但他如何明确请求加入比赛?

[GKTurnBasedMatch loadMatchWithID:matchID withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) {
if(error || !match) {
[[AMAlertManager sharedManager] showError:i18n(@"errors.invalidInvite")];
}
else {
// Now what?
}
}];

最佳答案

我最终弄明白了,这很简单。诀窍在于,一旦您加载了 GKTurnBasedMatch,您只想查看找到的比赛的参与者(这些是已经在游戏中的玩家),然后根据他们创建一个玩家 ID 数组。在执行 findMatchForRequest 时,您可以将此数组用作 .playersToInvite 属性。

事实上,您可以将此数组传递给 handleInviteFromGameCenter 委托(delegate)方法,以重用现有代码进行游戏中心邀请。

此函数将让玩家加入特定的 matchID:

- (void)handleInviteToMatchID:(NSString*)matchID {
[GKTurnBasedMatch loadMatchWithID:matchID withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error) {
if(error || !match) {
[[AMAlertManager sharedManager] showError:i18n(@"errors.invite.invalid")];
}
else if(match.status != GKTurnBasedMatchStatusMatching) {
[[AMAlertManager sharedManager] showError:i18n(@"errors.invite.notMatching")];
}
else {
NSMutableArray *playersToInvite = [NSMutableArray array];
for(GKTurnBasedParticipant *player in match.participants) {
if(player.playerID) {
[playersToInvite addObject:player.playerID];
}
}
[self handleInviteFromGameCenter:playersToInvite];
}
}];
}

关于iphone - 根据其 ID 加入特定的 GKTurnBasedMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18772576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com