iOS7中,在第一次取消后,Game Center登录对话框不再显示。

10

我在登录到Game Center时遇到了问题。我在应用程序完成加载后立即呈现登录对话框。如果用户取消了对话框,我想提供一个登录按钮在我的主菜单中让他改变主意。然而,在iOS7的iPad上,按钮没有任何作用——Game Center对话框不会显示(在iOS6上它可以正常工作)。相反,我立即得到错误提示:“请求的操作已被用户取消或禁用。”相同的代码在应用程序启动时和按钮点击时都被调用。它使用authenticateWithCompletionHandler方法,基本上看起来像:

GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];
[localPlayer authenticateWithCompletionHandler:^(NSError *error)
{
    OnLogin(error);
}];

(我知道这种方法已被弃用,但是使用新方法的经验甚至更糟。)

有趣的是,如果将应用程序移动到后台,然后将其带回前台,GC对话框确实会出现。

即使在第一次取消之后发生了描述的问题,因此我不认为它与Game Center在3次取消后禁止应用程序有任何关系。

是否有人知道如何解决这个问题?


这个答案有帮助吗?链接 - Joseph Chen
1
@JosephChen 如果用户取消了呈现的登录界面,则再次调用这些方法不会有任何作用,或者说,完成处理程序将会以错误形式被调用。用户随后需要通过GameCenter应用程序或设置应用程序进行登录。你知道这是否是苹果公司所预期的行为吗?你能提供任何相关链接吗?如果是这种情况,请将其作为答案发布;如果可以将该行为链接到例如苹果文档之类的内容,我将非常乐意接受它。 - user2986426
嗨,我成功地找到了一些关于这个问题的信息,尽管在之前的帖子中我并没有看到它。详情如下... - Joseph Chen
1个回答

11

关于您的评论,我找到了苹果文档,提到Game Kit政策不会在用户取消登陆后再次要求登录。

它在Game Center编程指南中,在与玩家一起工作的常见任务>在设备上对本地玩家进行身份验证下。(粗体是我的)

重要提示:Game Kit处理所有支持Game Center的游戏中退出Game Center。如果玩家已经拒绝创建帐户,则当您的游戏验证玩家时,会告知没有通过身份验证的玩家。玩家从未看到身份验证对话框。由于Game Kit在所有游戏中处理此过程,因此您的游戏不应包含其自己的机制以禁用Game Center身份验证或要求玩家权限进行身份验证。相反,您的游戏应该在每次启动时简单地验证玩家,并在身份验证完成时做出适当的响应。

您可以通过在身份验证处理程序中包含一个NSLog来确认此内容,以显示每次调用处理程序以及成功或失败情况。希望这可以帮助您...


事实上,我有一段时间之前就读过那部分内容,但不知何故,它并没有与我产生共鸣,说明它基本上描述了我面临的问题。我仍然认为他们在这方面可以更明确一些(说实话,我个人觉得“拒绝创建帐户”有点神秘)。无论如何,非常感谢您的帮助! - user2986426
2
尽管仍不清楚为什么在将应用程序切换到后台并再次切换到前台后,对话框会被显示出来。 - user2986426

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接