我遇到了一些严重令人困惑的 Game Center 问题。
我的应用程序仅在 iOS 6 及更高版本上运行,并且我一直在使用标准代码通过 Game Center 进行身份验证:
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController,
NSError *error) {
// Respond to authentication (failure or success) here!
}
使用此代码,该应用程序在开发过程中和大约 10-15 位临时分发版中的 beta 测试人员都可以运行良好且没有问题数周。
对于大部分时间和大多数用户来说,应用程序的行为与您预期的一样:如果您在应用程序启动时没有登录 Game Center,或者登录到生产 Game Center 帐户,应用程序会提示您(使用模态Game Center 主题的视图控制器)使用沙盒帐户登录。您登录到您的沙盒帐户,一切正常。
然而,对于少数用户来说,一些非常奇怪的事情已经开始发生。
authenticateHandler
代码被称为is error
,nil
但是[GKLocalPlayer localPlayer].authenticated
is NO
,并且用户没有登录到 Game Center。最重要的是,没有提示用户登录的模式游戏中心对话框。应用程序只是启动,authenticateHandler
代码被调用,但没有进行身份验证。我认为如果 Game Center 应用程序允许我使用我的沙盒帐户登录,该应用程序将工作,但它不能:登录或退出我的生产 Game Center 帐户,没有沙盒登录选项。
由于这只发生在某些用户身上,而且只是在我的开发设备上才开始发生,我非常怀疑这是我的代码有问题,我猜这是 iTunes Connect、配置文件、Game Center 的设置和设备上的历史记录等。
Game Center 在我们的 App ID 和 iTunes Connect(以及两者匹配的 App ID)中启用。
帮助!
编辑
我的问题可能类似于iOS Development: Strange question with authentication Game Center user。针对该问题提出的解决方案是在 Game Center 应用程序中手动登录。这似乎是一个明智的解决方案,但我需要登录沙盒环境,并且我找不到在 Game Center 应用程序中获取沙盒 Game Center 登录提示的方法。