iOS 6 中的 Game Center 出现问题

Posted

技术标签:

【中文标题】iOS 6 中的 Game Center 出现问题【英文标题】:Having issue with Game Center in iOS 6 【发布时间】:2012-09-26 21:40:59 【问题描述】:

我曾经使用此代码在游戏中心登录用户帐户:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
     
         if (error != nil)
         
             NSLog(@"LOGIN");
          else 
             NSLog(@"CANT LOGIN");
         
     ];

此代码在 ios 5.x 中运行良好,但在 iOS 6 中崩溃,如果您能帮助修复它,我将不胜感激。

谢谢

【问题讨论】:

此方法在 iOS 6 中已弃用;改为设置 authenticateHandler 属性。 (不过,这可能无法解决您的崩溃问题。为此,您需要显示更多代码。) 这是我登录GameCenter的代码!(上),你能给我一个示例代码吗? 【参考方案1】:

需要检查iOS5还是6。iOS6更改了认证功能

iOS6

   localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
    
        //Something
    

iOS5

    [localPlayer authenticateWithCompletionHandler:^(NSError *error)
    
        //Something
    ];

【讨论】:

【参考方案2】:

这适用于 iOS 6:

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) 
        if (viewController != nil) 
            [self presentViewController:viewController animated:YES completion:nil];
         else if (localPlayer.isAuthenticated) 
            // do post-authentication work
         else 
            // do unauthenticated work, such as error message, etc
        
    ;

【讨论】:

【参考方案3】:

这里有Game Center Programming Guide

这就是您必须在 iOS6 中验证用户的方式:

- (void) authenticateLocalPlayer

    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
         if (viewController != nil)
         
             [self showAuthenticationDialogWhenReasonable: viewController
         
         else if (localPlayer.isAuthenticated)
         
             [self authenticatedPlayer: localPlayer];
         
         else
         
             [self disableGameCenter];
         
     ];

您还应该检查this question,因为您的应用程序可能由于自动旋转问题和游戏中心而崩溃,而不是身份验证机制本身

【讨论】:

非常感谢 Lio,这段代码在 iOS 5 和 iOS 6 上一起工作吗?我的游戏在 iOS 5 上运行良好。我希望我的游戏在 iOS 5 和 iOS 6 上一起运行!请帮助我。我有不可抗力的工作。非常感谢。 看到这个错误:1.3.3.img98.net/out.php/… 这些错误是因为我粘贴的代码是示例代码,您实际上必须实现这些方法。回答你以前的方法,不,代码只适用于iOS6。我在 iOS6 中使用旧的 iOS5 代码,它仍然可以正常工作。您应该追踪崩溃并找出原因。我建议您查看我在回答中链接的那个问题。祝你好运 这是从 Apple 的 Game Center 编程指南中复制/粘贴的:developer.apple.com/library/ios/#documentation/…,它本身包含一个错误。

以上是关于iOS 6 中的 Game Center 出现问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 6 Game Center 在身份验证时崩溃

iOS 6 Game Center authenticateHandler 取消后无法登录

iOS 6 Game Center authenticateHandler取消后无法登录

如何更改 Game Center (iOS) 中的排行榜图标?

iOS 6 中的游戏中心

有没有办法为 iOS 应用禁用 Game Center?