ios – 有时永远不会调用Game Center身份验证处理程序

ios – 有时永远不会调用Game Center身份验证处理程序,第1张

概述在我们的iOS游戏中,我们使用Game Center来识别玩家并使用我们自己的服务器跨设备同步他们的数据.因为游戏中心识别玩家,我们需要知道他们是否经过身份验证,或者他们是否更改了身份验证等.我们有一个标题屏幕显示“正在初始化游戏中心…”,直到认证调用返回,并且只有一次我们知道他们被认证为谁(如果有人)我们进入游戏. 但是,在非常少的时间内(实际上,我自己无法重现它),永远不会调用身份验证处理程序 在我们的iOS游戏中,我们使用Game Center来识别玩家并使用我们自己的服务器跨设备同步他们的数据.因为游戏中心识别玩家,我们需要知道他们是否经过身份验证,或者他们是否更改了身份验证等.我们有一个标题屏幕显示“正在初始化游戏中心…”,直到认证调用返回,并且只有一次我们知道他们被认证为谁(如果有人)我们进入游戏.

但是,在非常少的时间内(实际上,我自己无法重现它),永远不会调用身份验证处理程序.几分钟后等待.游戏中心欢迎横幅也从不显示,因此不仅仅是我们的处理程序从未被调用过,但似乎确实没有身份验证状态.

到目前为止,我们实施了30秒的超时,如果我们没有从Game Center听到任何消息,我们认为身份验证状态没有改变,我们使用您保存的数据.那30秒的超时并不理想,所以我想知道当GC没有响应时是否有任何押韵或理由.

以下是从我们的App Delegate应用程序调用的代码:dIDFinishLaunchingWithOptions:method:

PlayerModel *playerModel = [PlayerModel sharedplayerModel];GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];if ([localPlayer respondsToSelector:@selector(setAuthenticateHandler:)]){    localPlayer.authenticateHandler = ^(UIVIEwController *gkVIEwController,NSError *error)    {        if (localPlayer.authenticated)        {            [playerModel loadFromGameCenter];            playerModel.hasGCStatus = TRUE;            [playerModel sync];        }        else if (gkVIEwController)        {            [vIEwController presentVIEwController:gkVIEwController animated:TRUE completion:nil];        }        else        {            NSLog(@"Could not authenticate with Game Center");            [playerModel unloadFromGameCenter];            playerModel.hasGCStatus = TRUE;            [playerModel sync];        }    };}else{    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {        if (localPlayer.authenticated)        {            [playerModel loadFromGameCenter];            playerModel.hasGCStatus = TRUE;            [playerModel sync];        }        else        {            NSLog(@"Could not authenticate with Game Center");            [playerModel unloadFromGameCenter];            playerModel.hasGCStatus = TRUE;            [playerModel sync];        }    }];}
解决方法 我在沙盒服务器上的一个游戏测试期间有过这方面的经验,有时候确实没有通知或认证处理程序调用,然后它会在半小时后工作.

我们总结说这是由于Apple的服务器端,因为我们从未在Game Center沙箱之外遇到过这个问题.

对不起,解释有点模糊,没有什么具体的,你可以做.但这不是你的代码.它最终是你无法控制的.

总结

以上是内存溢出为你收集整理的ios – 有时永远不会调用Game Center身份验证处理程序全部内容,希望文章能够帮你解决ios – 有时永远不会调用Game Center身份验证处理程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存