Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 游戏中心的困境:iTunes连接?资源调配配置文件?还有别的吗?_Ios_Cocoa_App Store Connect_Game Center_Gamekit - Fatal编程技术网

Ios 游戏中心的困境:iTunes连接?资源调配配置文件?还有别的吗?

Ios 游戏中心的困境:iTunes连接?资源调配配置文件?还有别的吗?,ios,cocoa,app-store-connect,game-center,gamekit,Ios,Cocoa,App Store Connect,Game Center,Gamekit,我有一些严重的游戏中心问题 我的应用程序仅在iOS 6及以上版本上运行,我一直在使用标准代码与Game Center进行身份验证: GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {

我有一些严重的游戏中心问题

我的应用程序仅在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帐户,则应用程序会提示您(使用以modal Game Center为主题的视图控制器)使用沙箱帐户登录。您登录到您的沙盒帐户,一切正常

然而,对于一些用户来说,一些非常奇怪的事情已经开始发生

调用
authenticateHandler
代码,
error
nil
,但
[GKLocalPlayer localPlayer]。authenticated
NO
,用户未登录游戏中心。最重要的是,没有模式游戏中心对话框来提示用户登录。应用程序只需启动,就会调用
authenticateHandler
代码,但不会进行身份验证。我认为,如果游戏中心应用程序允许我使用我的沙盒帐户登录,该应用程序将正常工作,但它不允许:登录或退出我的生产游戏中心帐户,没有沙盒登录选项

由于这种情况只发生在一些用户身上,并且在我的开发设备上才开始发生,我非常怀疑这是我的代码的问题,我猜这是iTunes Connect、配置文件、游戏中心的设置和设备上的历史记录等之间的复杂相互作用

Game Center已在我们的应用程序ID和iTunes Connect中启用(以及两个match的应用程序ID)

救命啊

编辑
我的问题可能类似于。针对该问题提出的解决方案是在Game Center应用程序中手动登录。这似乎是一个合理的解决方案,但我需要登录到沙箱环境,并且我无法找到在游戏中心应用程序中获得沙箱游戏中心登录提示的方法。

我刚刚在我的设备上尝试过,如果用户禁用了游戏中心,会发生什么情况:用户无法再从应用程序内部访问游戏中心登录视图控制器。您需要为用户手动登录发布一些说明

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


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

这些用户是否可能禁用了游戏中心?如果连续取消登录GC 2-3次,设备会提示您禁用它。在此之后,您只能手动登录,应用程序将不再显示GC验证对话框。@MarkoNikolovski感谢您的建议。我读过关于这种行为的文章(见我编辑中的链接问题),怀疑这可能是我的问题。我不认为我多次取消登录,但不管怎样,这可能就是为什么我的身份验证对话框没有出现的原因。不过,我的问题是:当游戏中心应用程序在密码占位符字段中不提供“沙盒”时,如何登录到沙盒?事实证明,问题主要是由于我在
authenticateHandler
代码中犯了一个错误,我的逻辑没有正确地向用户显示
viewController
,以便他们可以登录。由于在显示视图控制器和游戏中心被“禁用”时仍然存在一些令人困惑的问题,@MarkoNikolovski的答案是有用的和正确的,因此我将其标记为答案。谢谢,很高兴我能提供帮助。感谢到清单3-1的链接。我认为,在生产环境中,您是对的,检查并告诉用户“转到游戏中心应用程序并手动登录”肯定会起作用。可以肯定的是,一些遇到此错误的人(包括我自己)几次都没有点击对话框上的“取消”。是否有其他方法可以禁用游戏中心?另外:知道如何在游戏中心应用程序中获得沙盒登录提示以克服GC被“禁用”的问题吗;DR:我无法测试我的应用程序,因为我无法让游戏中心向我显示沙盒登录,以覆盖GC被“禁用”,如果这确实是正在发生的事情。你能登录到游戏中心吗,不管它是否是沙盒?另外,您是在模拟器中还是在设备上?在设备上。我可以成功登录到生产游戏中心环境。一个想法是:在iTunes Connect和配置文件中创建一个新的应用程序,如果GC“disabled”状态是每个应用程序的状态,那么这个配置文件的唯一目的就是提供一个“fresh”Game Center沙盒登录提示。这听起来好像太多工作了。我相信这不会那么复杂#名言