iOS - 检测游戏中心是否被禁用

10

我正在开发一个Unity iPhone游戏。

简短版: 当用户拒绝身份验证3次时,游戏中心可以被禁用。这种禁用状态能否检测到?

详细版: 如果你还没有经历过这个可怕的事情,那么请注意:如果你尝试取消三次游戏中心的身份验证,游戏中心将停止提示你登录。此后,任何游戏中心功能都将无法使用,也不会在尝试使用时收到通知。你什么也得不到,按钮将失效。

不过,游戏中心确实会返回一条不明确的错误信息。我想:嘿,当错误信息返回时,我只需增加一个小型弹出窗口,通知用户游戏中心已被禁用。

这是愚蠢的,因为事实证明,当您在实际身份验证提示上点击“取消”时,此特定错误消息也会显示...甚至在其他情况下也是如此。因此,现在我面临着两个选择:要么从不告诉玩家游戏中心被禁用了,并希望他们自己想出来;要么在真正拒绝并偶尔出现时以一种麻烦、看起来有问题的方式向他们发出垃圾邮件。

有没有一种方法可以编程检测游戏中心已被禁用?这肯定会为每个人节省大量麻烦。我认为答案是否定的,因为第一考虑是不要向用户发垃圾邮件。告诉我我错了,有人!


Related - bobobobo
4个回答

3

我总是检查我的游戏是否有3次错误尝试。这样我就知道GameCenter被禁用了,我会在用户点击GameCenter按钮时给他们提供切换到GameCenter并登录的选项。


8
这不是一个答案,而是你需要做的事情。 - DivineDesert
是的,我也这么认为 @Roel。但是你如何检测用户取消了 3 次? - Tony

2

最近我也遇到了同样的bug,并弄清楚了以下内容。当您认证本地玩家时,您可以捕捉到一个错误,让您知道游戏中心已被禁用。

- (void) authenticateLocalPlayer
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {
         if (error != nil)
         {
             // You get here if Game Center is disabled -- check error
             // to figure out what's going on.
         }
     }];
}

点击此处查看苹果公司的文档。


2
错误总是Error Domain=GKErrorDomain Code=2 "请求操作已被取消。" UserInfo=0xa564f10 {NSLocalizedDescription=请求的操作已被取消。}, 无论用户是仅取消了Game Center模态窗口还是完全禁用了应用程序。 - dvs
实际上我得到了“请求的操作已被取消”或“已被用户禁用”的错误提示。 - bobobobo

2
据我所知,没有其他方法。游戏中心并未完全禁用,但您需要前往游戏中心应用程序并从那里登录才能再次使用它。因此,如果尝试使用游戏中心失败,您可以建议用户这样做(从游戏中心应用程序登录)。这不是最好的解决方案,因为您不知道它失败的确切原因,但到目前为止,我还没有找到更好的解决方案。

-7

iOS 7上解决这个问题的唯一方法是

设置/通用/重置/重置所有设置

然后,您只需再次启动您的应用程序。 Game Center 登录将再次正常工作。


2
有人可以编辑这个明显不相关的答案吗?它以超粗体显示。 - user234736

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接