GKLocalPlayer 身份验证不起作用,但 isAuthenticated 返回 YES(游戏中心沙盒)

2024-06-26

我正在努力将回合制比赛集成到我的游戏中,几天前,我开始从 GameKit API 收到奇怪的错误,指出本地玩家未经过身份验证,尽管他已通过身份验证。

当我启动应用程序时,authenticateHandler被调用,显示视图控制器,输入密码后,authenticaHandler再次调用,本地玩家似乎已通过身份验证。isAuthenticated回报YES.

但一旦我开始使用任何 GameKit API,例如loadFriendsWithCompletionHandler:,返回错误,表示玩家尚未通过身份验证。

这是处理身份验证更改的代码。

[[GKLocalPlayer localPlayer] setAuthenticateHandler:^(UIViewController *viewController, NSError *error) {
    if ([[GKLocalPlayer localPlayer] isAuthenticated]) {
        // Player authenticated
    } else {
        // Player not authenticated

        if (viewController != nil) {
            // Present view controller
        }
    }
}];

这是我在调用任何 GameKit 方法时收到的错误消息。请注意-isAuthenticated返回错误时仍然返回YES。

查找匹配时出错:错误域=GKErrorDomain代码=6“请求的操作无法完成,因为本地玩家尚未经过身份验证。” UserInfo=0x14e9f950 {NSLocalizedDescription=请求的操作无法完成,因为本地玩家尚未经过身份验证。}
(lldb) print (BOOL) [[GKLocalPlayer localPlayer] isAuthenticated] (布尔)$3 = 是

我正在游戏中心沙盒中进行测试,几天前就开始发生这种情况。以前,我根本没有遇到过这个问题。
当应用程序启动时,这种情况只会发生大约三分之一。我尝试过删除应用程序、重新启动设备、清理构建文件夹以及我能想到的所有其他内容。

我错过了什么或者其他人遇到过类似的问题吗?


这个有钱人苹果文档 https://developer.apple.com/library/ios/documentation/GameKit/Reference/GKLocalPlayer_Ref/Reference/Reference.html是一个值得一看的好地方。我建议有两件事 -

  1. 如果您的设备有,Game Center 无法完成身份验证 日期不正确。因此,请继续检查当前日期。

  2. 你可能已经这样做了。我相信你 - iOS 模拟器 >> 重置 内容和设置

您认为您的使用方式可能有问题吗-[GKLocalPlayer loadFriendsWithCompletionHandler:]?您上面的身份验证功能没有任何问题,但如果它适合您,我很乐意分享我的 -

-(void)authenticateLocalPlayer{

    // Instantiate a GKLocalPlayer object to use for authenticating a player.
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
        if (viewController != nil) {

            // If it's needed display the login view controller.
            [self presentViewController:viewController animated:YES completion:nil];

        }
        else {
            if ([GKLocalPlayer localPlayer].authenticated) {
                // If the player is already authenticated then indicate that the Game Center features can be used.

                _gameCenterEnabled = YES;

            }

            else {
                _gameCenterEnabled = NO;
            }
        }
    };
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GKLocalPlayer 身份验证不起作用,但 isAuthenticated 返回 YES(游戏中心沙盒) 的相关文章

  • iOS 6.0 Quicklook QLPreviewController 错误:“无法找到已加载代理的预览项目”

    我的应用程序一直使用 QLPreviewController 来显示所有类型的文件 在 iOS 5 x 中 它似乎做得很好 现在 在 iOS 6 0 中 我收到一个错误 它显示了控制器 但带有恒定的加载指示器 并且从未实际加载任何内容 日志
  • 接受 iOS 应用付款吗?

    在ios应用程序上实现支付系统可以吗 我想制作一个应用程序 可以浏览我的电子商务网站上的产品 然后让人们在我的应用程序上购买产品 我问这个问题是因为我听说它违反了苹果的政策 这显然取决于所出售的商品 当然 最终的答案只能从你的律师对苹果协议
  • 我们可以传递一个参数来查看某个类中其他类的加载情况或视图将出现吗

    抱歉 如果这不是标准问题 但现在您的解决方案可以帮助我 在我的应用程序中 我有两个类 ClassA and ClassB ClassB其中有一个表视图 我正在使用查询来填充表视图ClassB 但是我必须查询的列名是我从中得到的ClassA
  • 使用 Titanium Mobile 编译应用程序后 JavaScript 代码会发生什么

    我从 appcelerator 安装了 Titanium 并构建了 KitchenSink 示例应用程序 一切正常 我只是想知道 javascript 代码最终在构建的应用程序中的位置 我用 grep 编辑了 Xcode 项目以及结果应用程
  • 如何在 Objective C 中将 html 数据转换为 PDF

    我想在 Objective C 中动态地将 html 转换为 pdf 转换它的最佳方法是什么 以便它保持与 html 相同的外观 提前致谢 Prasad UIGraphicsBeginPDFContextToFile https devel
  • 在没有按钮的 SwiftUI 中呈现新视图

    所以我想使用 SwiftUI 呈现一个新视图 而用户不必点击按钮 因为NavigationButton会用那个 这是一个例子 struct ContentView View var model Model var body some Vie
  • Swift PerformSegueWithIdentifier 不起作用

    我试图在用户成功登录其帐户后切换视图控制器 但它无法正常工作 我无法直接使用 segue 因为如果单击登录按钮 无论信息是否正确 它都会转到该视图控制器 我已经尝试了我所知道的一切 但没有成功 这是我正在尝试的代码 IBAction fun
  • 目标 C:检测震动

    我正在使用 shake api 如下所示 void motionEnded UIEventSubtype motion withEvent UIEvent event if event subtype UIEventSubtypeMotio
  • 如何在 AVCaptureVideoPreviewLayer 上添加叠加层?

    我正在使用 Swift 构建一个 iOS 应用程序 它需要二维码扫描仪功能 我已经使用 AVFoundation 实现了 QR 码扫描仪 现在我的捕获屏幕看起来与视频录制屏幕相同 即AVCaptureVideoPreviewLayer显示相
  • 致命错误:在解包可选值时意外发现 nil (lldb)

    override func prepareForSegue segue UIStoryboardSegue sender AnyObject if segue identifier showLocalMenuDetail if let in
  • iOS Facebook SDK 通过图搜索来搜索用户

    我是图形搜索新手 我想搜索具有电子邮件地址的用户 那可能吗 现在 我只知道如何使用他们的名字进行搜索 如下所示 https graph facebook com search q chandler de angelis type user
  • Facebook SDK:openActiveSessionWithPermissionscompletionHandler 未调用

    使用我已经实现的 Facebook 代码 BOOL openSessionWithAllowLoginUI BOOL allowLoginUI NSArray permissions NSArray alloc initWithObject
  • UIDatePicker 中的最小和最大日期

    我想从日期选择器中获取最小和最大日期 但最小日期应为当前日期的 18 最大日期应为当前日期的 100 假设当前年份是 2018 年 那么我想要最小日期 2000 年和最大日期 1918 年 到目前为止我所做的是 NSCalendar gre
  • stringWithUTF8String 的“不完整的通用字符名称”

    当我尝试将 utf 8 字符串转换为 NSString 时 如下所示 NSString s NSString stringWithUTF8String U0627 U0644 U0641 U0631 U0646 NSLog s 我收到编译错
  • 设置视图控制器根视图的外观代理

    使用 UIAppearance 时是否可以仅针对视图控制器的根视图 我想从我的应用程序委托中为所有控制器设置背景颜色 但只想定位视图控制器上的直接视图 谢谢 详细来说 每个 UIViewController 子类都有自己的 UIView 对
  • xamarin 中的本机链接错误

    我今天尝试编译我的 xamarin 项目 突然收到以下错误 错误 MT5210 本机链接失败 未定义符号 mono handle global vregs 请验证是否已引用所有必要的框架并且本机库是否正确 链接到 错误 MT5210 本机链
  • 禁用应用程序的启动图像

    我想从我的应用程序禁用启动图像 我已经有一个启动屏幕 因此在应用程序启动时首先显示启动图像 然后显示启动屏幕 我想禁用启动图像并仅在应用程序启动时显示启动屏幕 请帮忙 提前致谢 你不能 因为它会一直保持到你的程序被加载并从applicati
  • AVAssetWriter 不适用于音频

    我正在尝试让音频与 iOS 应用程序的视频一起使用 视频很好 文件中没有录制任何音频 我的 iPhone 扬声器可以工作 这是初始化设置 session AVCaptureSession alloc init menu gt session
  • 如何为所有导航控制器和视图控制器设置自定义导航栏(标题 + titleView)?

    我有一个选项卡式应用程序 选项卡中有导航控制器 其中有视图控制器 它们都使用相同的导航控制器导航栏 后退按钮 徽标图像 目前 我将此代码放置在每个视图控制器中 void viewDidLoad super viewDidLoad self
  • 如何在 Cocoa 中将 NSString 转换为 unsigned int?

    我的申请收到了NSString含有一个unsigned int NSString 没有 myString unsignedIntegerValue 方法 我希望能够从字符串中取出值而不破坏它 然后将其放入NSNumber 我正在尝试这样做

随机推荐