【发布时间】:2013-03-25 15:16:30
【问题描述】:
我遇到了一些令人困惑的 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 帐户,应用程序会提示您 (使用模态游戏中心主题的视图控制器)以使用沙盒帐户登录。您登录到您的沙盒帐户,一切正常。
不过,对于少数用户来说,一些非常奇怪的事情已经开始发生了。
调用authenticateHandler 代码,error 是nil,但[GKLocalPlayer localPlayer].authenticated 是NO,并且用户没有登录游戏中心。最重要的是,没有模式游戏中心对话框提示用户登录。应用程序只是启动,authenticateHandler 代码被调用,但没有进行身份验证。我认为如果 Game Center 应用程序允许我使用我的沙盒帐户登录,该应用程序将可以工作,但它不能:登录或退出我的生产 Game Center 帐户,没有沙盒登录选项。
由于这只发生在一些用户身上,而且我的开发设备才开始发生这种情况,我非常怀疑这是我的代码有问题,我猜测这是一些复杂的相互作用iTunes Connect、配置文件、Game Center 的设置和设备上的历史记录等。
Game Center 在我们的 App ID 和 iTunes Connect 中启用(以及两者匹配的 App ID)。
救命!
编辑
我的问题可能类似于iOS Development: Strange problem with authenticating Game Center user。针对该问题提出的解决方案是在 Game Center 应用程序中手动登录。这似乎是一个明智的解决方案,但我需要登录沙盒环境,并且我找不到在 Game Center 应用中获得沙盒 Game Center 登录提示的方法。
【问题讨论】:
-
这些用户是否有可能禁用了游戏中心?如果您连续取消登录GC 2-3次,设备会提示您禁用它。之后您只能手动登录,该应用将不再显示 GC 身份验证对话框。
-
@MarkoNikolovski 感谢您的建议。我已经阅读过这种行为(请参阅我编辑中的链接问题),并怀疑这可能是我的问题。我认为我没有重复取消登录,但无论如何,这可能就是我的身份验证对话框没有出现的原因。不过我的问题是:当游戏中心应用程序在密码占位符字段中不提供“沙盒”时,如何使用游戏中心应用程序登录沙盒?
-
事实证明,问题主要是由于我在
authenticateHandler代码中犯的一个错误,我的逻辑没有正确地将viewController呈现给用户以便他们可以登录。Insofar由于在呈现视图控制器和 Game Center 被“禁用”方面仍然存在一些令人困惑的问题,@MarkoNikolovski 的回答很有帮助且正确,因此我将其标记为答案。 -
谢谢,很高兴能帮上忙。
标签: ios cocoa app-store-connect game-center gamekit