iOS 8.3上的游戏中心身份验证问题

时间:2015-04-28 09:26:09

标签: ios xamarin xamarin.ios game-center

我正在尝试了解Game Center并编写了一个小的实现,当我将其部署到我的iPhone5(运行iOS7)时似乎可以工作。但是,当我运行相同的代码(调试部署)到我的iPhone 6+(iOS8.3)或iPad(iOS8.3)时,根本不会进行身份验证。即使我在运行代码之前使用沙盒帐户登录Game Center,它仍然无法识别我已登录!

我正在使用Xamarin,所以代码是c#..

这是验证码:

 public static void setAuthenticateHandler()
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(6, 0))
        {
            GKLocalPlayer.LocalPlayer.AuthenticateHandler = (ui, error) =>
            {
                if (ui != null)
                {
                    GameCenterManager._controller.PresentViewController(ui, true, null);
                }
                else if (GKLocalPlayer.LocalPlayer.Authenticated)
                {
                    if (currentPlayerID != null || currentPlayerID != GKLocalPlayer.LocalPlayer.PlayerID)
                        currentPlayerID = GKLocalPlayer.LocalPlayer.PlayerID;

                    if (AfterAuthentication != null)
                        AfterAuthentication();
                }
                else
                {
                    var alert = new UIAlertView("Game Center Account Required", "Login to the game center!", null, "Retry", null);
                    alert.Clicked += (sender, e) =>
                    {
                        //GKLocalPlayer.LocalPlayer.Authenticated();
                    };
                    alert.Show();
                }
            };
        }
        else
        {
            var authenticatedHandler = new Action<NSError> ((error) => {
                if (GKLocalPlayer.LocalPlayer.Authenticated)
                {
                    if (currentPlayerID != null || currentPlayerID != GKLocalPlayer.LocalPlayer.PlayerID)
                        currentPlayerID = GKLocalPlayer.LocalPlayer.PlayerID;

                    if (AfterAuthentication != null)
                        AfterAuthentication();
                }
                else
                {
                    var alert = new UIAlertView("Game Center Account Required", "Login to the game center!", null, "Retry", null);
                    alert.Clicked += (sender, e) =>
                    {
                        setAuthenticateHandler();
                    };
                    alert.Show();

                }
            });
            GKLocalPlayer.LocalPlayer.Authenticate(authenticatedHandler);

        }
    }

几个问题:

  1. 如果iOS是主要版本6或更高版本,我认为UIDevice.CurrentDevice.CheckSystemVersion(6, 0)调用只返回true?

  2. 我可以多次运行这个静态方法 - 知道在指定AuthenticateHandler后它会立即执行游戏中心检查吗?

  3. 现在对于 MAIN ISSUE - 在模拟器(iOS8.2)的调试中运行时,一切正常,如果我没有登录,则调用GameCenterManager._controller.PresentViewController(ui, true, null); GC尚未 - 所以一切都好。同样在我的iPhone5(iOS7)上运行良好,如果我已经登录,则调用GKLocalPlayer.LocalPlayer.Authenticated。但是,在我运行iOS8.3的其他设备上,它会直接跳到警报窗口,无论我是否已经登录,都会直接跳到警报窗口。

  4. 注意:我读过有人建议在我的设置中打开Sandbox开关 - &gt; GameCenter - &gt; Sandbox但是我的iphone 5,6 +和ipad上没有它 - 它不在那里吗?...

    任何帮助都非常感激 - 这让我疯了!

0 个答案:

没有答案