ios:以编程方式请求Game Centerlogin?

我有一个简单的问题,但我已经浏览了苹果的文档,并做了一些search,我找不到答案。

是否有可能以编程方式拉起Game Center的login视图? 我有一个需要Game Center的UIButton ,如果客户端在应用程序打开时没有login(iOS在启动时拉起login视图),我想为用户提供第二次login机会。

我假设你在启动时调用了这个GKLocalPlayer方法: -setAuthenticateHandler: (> = iOS7)或-authenticateWithCompletionHandler: (<= iOS6)

如果用户取消提供的login屏幕,再次调用这些方法什么也不做,或者说,完成处理程序被调用时会出错。 用户将需要通过GameCenter应用程序或通过设置应用程序login到GameCenter。 (testing时,您可以通过GameCenter应用程序login,然后注销,之后屏幕可以再次显示在您自己的应用程序中)。您可以显示一个UIAlertView,告诉用户通过GameCenter应用程序login。

另外,我不知道这是否被允许/可以批准,但是在iOS7中, authenticateHandler有一个保存login屏幕的viewController参数。 如果将此login视图控制器存储在一个实例variables中,并且用户取消login,则稍后可以使用UINavigationController再次显示login屏幕。

如果尝试使用-presentViewController:animated:completion:来呈现已保存的login视图控制器-presentViewController:animated:completion:视图控制器的“取消”button不再有效,但是使用UINavigationController将隐藏“取消”button并允许导航回到您自己的视图控制器。

您还需要在用户login后手动隐藏login屏幕,方法是响应GKPlayerAuthenticationDidChangeNotificationName 。 开发人员似乎并不打算能够这样做,所以它可能不通过批准,但它的工作原理!