6

我遇到了一些严重令人困惑的 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 errornil但是[GKLocalPlayer localPlayer].authenticatedis 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 登录提示的方法。

4

1 回答 1

1

我刚刚在我的设备上尝试了如果用户禁用了 Game Center 会发生什么:用户无法再从应用程序内部访问 Game Center 登录视图控制器。您需要发布一些说明以供用户手动登录。

我还手动访问了 Game Center 并登录到我的帐户(我的常规帐户和我的常规 iTunes 帐户),在返回我的应用程序后,我自动获得了身份验证,没有额外的提示。我敢打赌,如果您有一个单独的电子邮件/帐户用于沙盒 GC 帐户,您将再次获得身份验证对话框。

TL;DR:如果您无法获得模态对话框,请输入一些指导性文本用户应该做什么。查看GameKit 编程指南(PDF 第 36 页,清单 3-1)中的 Apple 代码。您需要在else零件中执行此代码。

于 2013-03-25T15:54:58.430 回答