我有一个简单的问题,但我查看了Apple的文档并进行了一些搜索,但我找不到答案。
是否有可能以编程方式提取Game Center的登录视图?我有UIButton
需要Game Center,如果客户端在应用程序打开时没有登录(iOS在启动时拉出登录视图),我想为用户提供第二次机会登录。
答案 0 :(得分:3)
我假设您在发布时调用此GKLocalPlayer方法:-setAuthenticateHandler:
(> = iOS7)或-authenticateWithCompletionHandler:
(< = iOS6)
如果用户取消显示的登录屏幕,则再次调用这些方法不会执行任何操作,或者更确切地说,调用完成处理程序时会显示错误。然后,用户需要通过GameCenter应用程序或“设置”应用程序登录GameCenter。 (测试时,您可以通过GameCenter应用程序登录,然后注销。之后,屏幕可以再次显示在您自己的应用程序中。)您可以显示UIAlertView,告诉用户通过GameCenter应用程序登录。
或者,我不知道这是否允许/可批准,但在iOS7中,authenticateHandler
有一个viewController
参数来保存登录屏幕。如果将此登录视图控制器存储在实例变量中并且用户取消登录,则可以稍后使用UINavigationController
再次显示登录屏幕。
如果您尝试使用-presentViewController:animated:completion:
显示已保存的登录视图控制器,则视图控制器的“取消”按钮不再起作用,但使用UINavigationController
会隐藏“取消”按钮并允许导航回您自己的视图控制器。
您还需要在用户登录后通过回复GKPlayerAuthenticationDidChangeNotificationName
手动隐藏登录屏幕。似乎开发人员不打算这样做,所以它可能无法通过批准,但它确实有效!