gpt4 book ai didi

game-center - GameKit GKMatchMaker inviteHandler 在 iOS7 中弃用,替代者是什么?

转载 作者:行者123 更新时间:2023-12-01 11:42:13 25 4
gpt4 key购买 nike

[GKMatchmaker sharedMatchmaker].inviteHandler 已在 iOS 7 中弃用,但 GameKit 指南仍建议以这种方式进行设置。有谁知道我们应该为 iOS 7 实时游戏邀请使用什么?有几个监听器类的新类/方法,但我所看到的没有一个专门解决这个问题。

'inviteHandler' is deprecated: first deprecated in iOS 7.0

最佳答案

所以我开始对此感到非常沮丧(几乎神奇的是,弃用警告昨天开始出现在我的控制台中)。 Apple 似乎没有详细说明如何将对象设置为实现新 GKLocalPlayerListener 协议(protocol)的对象。

这是我的做法。在验证我的本地播放器之后,我将实现 GKLocalPlayerListener 协议(protocol)的对象(在本例中为 self)注册为 Listener。我测试了我的应用程序如何响应相同的 Game Center 事件,并且它做出了相应的响应。我相信这是正确的方法,尽管我仍在质疑哪个地方最适合注册听众。我相信在玩家通过身份验证后这样做是有意义的,但它可能比这更微妙。

NSLog(@"Authenticating local user...");
__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

localPlayer.authenticateHandler =
^(UIViewController *viewController,
NSError *error) {

[self setLastError:error];

if (localPlayer.isAuthenticated) {

[localPlayer registerListener:self];

} else if(viewController) {

[self presentViewController:viewController];
} else {


}
};

您还希望避免多次注册监听器。这有点像为本地通知注册一个观察者。如果您不止一次这样做,您的监听器方法最终会被多次调用。

我信替换的方法:

-(void)handleInviteFromGameCenter:(NSArray *)playersToInvite;

是以下内容:

-(void)player:(GKPlayer *)player didRequestMatchWithPlayers:(NSArray *)playerIDsToInvite;

通过阅读文档,提到在调用时创建一个 GKMatchMakerViewController(或更定制的类似东西)。我知道这就是我在以前版本的应用程序中所做的,所以它不会那么遥远。该方法的结构也非常相似。

更多测试将确认这是否确实是接近新协议(protocol)的正确方法,但到目前为止它似乎是正确的。除非另有指示,否则我将继续此操作。

关于game-center - GameKit GKMatchMaker inviteHandler 在 iOS7 中弃用,替代者是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18904588/

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