【问题标题】:Game Center woes: iTunes Connect? Provisioning Profiles? Something else?游戏中心问题:iTunes Connect?配置文件?还有什么?
【发布时间】: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 代码,errornil,但[GKLocalPlayer localPlayer].authenticatedNO,并且用户没有登录游戏中心。最重要的是,没有模式游戏中心对话框提示用户登录。应用程序只是启动,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


【解决方案1】:

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

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

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

【讨论】:

  • 感谢列表 3-1 的链接。我认为在生产环境中,您是对的,检查这一点并告诉用户“转到 Game Center 应用程序并手动登录”肯定会起作用。很确定有些遇到此错误的人(包括我自己)没有在对话框中点击“取消”几次。是否有其他方法可以禁用 Game Center?另外:知道如何在 Game Center 应用程序中获取沙盒登录提示以克服 GC 被“禁用”的问题吗?
  • TL;DR:我无法测试我的应用程序,因为我无法让 Game Center 向我显示沙盒登录以覆盖 GC 以某种方式被“禁用”,如果这确实是继续。
  • 无论是否是沙盒,您都可以登录游戏中心吗?另外,您是在模拟器中还是在设备上执行此操作?
  • 在设备上。我可以成功登录到生产游戏中心环境。一个想法:在 iTunes Connect 和 Provisioning Profile 中创建一个新应用程序,其唯一目的是获得一个“新鲜”的 Game Center 沙盒登录提示,如果 GC“禁用”状态是每个应用程序的状态。
  • 这听起来工作量太大了。我相信这不应该那么复杂。 #着名的遗言
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多