我有一些令人困惑的游戏中心问题。
我的应用仅在iOS 6及更高版本上运行,并且我一直在使用标准代码对Game Center进行身份验证:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController,
NSError *error) {
// Respond to authentication (failure or success) here!
}
使用此代码,该应用程序运行良好且几周没有问题,在开发期间我自己运行,并且在临时分发中有大约10-15个beta测试人员。
对于大部分时间而言,对于大多数用户而言,该应用的行为与您预期的一样:如果您在应用启动时未登录游戏中心,或者登录到生产游戏中心帐户,应用会提示您(使用模态游戏中心主题的视图控制器)使用沙盒帐户登录。您登录到您的沙箱帐户,以及一切正常工作。
对于少数用户来说,一些非常奇怪的事情已经开始发生。
调用authenticateHandler
代码,error
为nil
,但[GKLocalPlayer localPlayer].authenticated
为NO
,用户未登录游戏中心。最重要的是,有 no 模式游戏中心对话框提示用户登录。应用程序只需启动,调用authenticateHandler
代码,但不进行身份验证。我认为如果Game Center应用程序允许我使用我的沙箱帐户登录,该应用程序将起作用,但它不会:登录或退出我的生产Game Center帐户,没有沙盒登录选项。
由于这只发生在某些用户身上,而且我的开发设备才开始发生,我非常怀疑它是我的代码的问题,我猜它是一些iTunes Connect,配置文件,游戏中心设置和设备历史等复杂的相互作用等。
在我们的App ID和iTunes Connect中启用了Game Center(以及两者匹配的App ID)。
帮助!
我的问题可能与iOS Development: Strange problem with authenticating Game Center user类似。针对该问题提出的解决方案是在Game Center应用程序中手动登录。这似乎是一个明智的解决方案,但我需要登录到沙箱环境,我无法找到在Game Center应用程序中获取沙箱游戏中心登录提示的方法。
答案 0 :(得分:1)
我刚尝试在我的设备上如果用户已禁用游戏中心会发生什么:用户无法再从应用程序内部进入游戏中心登录视图控制器。您需要发布一些说明供用户手动登录。
我还手动进入游戏中心并登录到我的帐户(我的常规帐户使用我的常规iTunes帐户),回到我的应用程序后,我自动进行了身份验证,没有其他提示。我敢打赌,如果您有一个单独的沙盒GC帐户电子邮件/帐户,您将再次获得身份验证对话框。
TL; DR:如果您无法获得模态对话框,请提供一些用户应该做的指导性文本。查看GameKit programming guide中的Apple代码(PDF第36页,清单3-1)。您需要在else
部分执行此代码。