我可以在 iOS 7 上手动提示用户登录 Game Center 吗?

2023-12-27

根据 Apple 的 Game Center 编程指南,此代码设置了一个身份验证处理程序。如果您在游戏开始时运行此命令,第一次运行它时,如果用户尚未登录,它将提示用户登录。

- (void)authenticateLocalPlayer {
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
        if (viewController != nil) {
            NSLog(@"Player not authenticated.");
        } else if (localPlayer.isAuthenticated) {
            NSLog(@"Authentication successful.");
        } else {
            NSLog(@"Authentication failed. Error: %@.",error);
        }
    };
}

假设用户还没有登录,取消认证界面即可正常玩游戏。

我的游戏中有一个用于进行多人比赛的按钮。如果用户按下该按钮,它将尝试通过显示一个信息来搜索其他玩家GKMatchmakerViewController实例。

由于玩家未登录,因此玩家实际上会收到一个错误对话框,指出他们未登录。该对话框只有一个“确定”按钮,可将其关闭。

如果玩家坚持按此按钮,则会出现相同的对话框。

然而,这是一种奇怪的行为。更合理的是,如果玩家想玩多人比赛但尚未登录,游戏会提示用户登录。

上面的代码设置了一个处理程序,所以它确实不是我想要的。但是,我下了一个断点并注意到viewController is a GKHostedAuthenticateViewController实例。我想也许我可以创建该类的一个实例并呈现它,这在技术上应该相当于提示用户登录。

但是,当我编写该类时,Xcode 似乎无法识别该类。我的印象是我不被允许这样做。

如何手动提示用户登录Game Center?


您可以首先通过读取 GKLocalPlayer 对象来检查玩家是否已通过身份验证。

如果没有经过身份验证的用户,您可以打开游戏中心应用程序。这种方法的缺点是,用户通过游戏中心应用程序进行身份验证后,他仍然在游戏中心应用程序中,并且必须“切换回”您的应用程序。当他切换回来时,您在代码中定义的身份验证处理程序将被触发。

-(void)clickedOnStartGame
{
    if (_signedIn)
    {
        //Do what you need to.
    }
    else if (!_signedIn)
    {
        UIAlertView *alertView = [[UIAlertView alloc]
                              initWithTitle:@"Game Center"
                              message:@"If Game Center is disabled try logging in through the Game Center app"
                              delegate:self
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:@"Open Game Center", nil];
        [alertView show];
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];
    }
}

编辑:请注意,在 Apple 的文档中,他们说您不应提示用户再次登录,或显示登录提示。自动化方式(您的代码已经具有)应该是可接受的方式。显示我上面描述的警报视图只是帮助用户登录游戏中心,因为您不应该强制应用程序显示对话。

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

我可以在 iOS 7 上手动提示用户登录 Game Center 吗? 的相关文章

  • 对象指针值作为字典的键

    我想使用对象的引用值作为字典的键 而不是对象值的副本 因此 我本质上想在字典中存储与另一个对象的特定实例关联的对象 并稍后检索该值 这可能吗 是不是完全违背了NSDictionary的理念 我可以看出我可能以错误的方式处理这个问题 因为字典
  • 开发者可以在 Windows 应用程序中使用 iCloud 吗?

    开发人员可以使用 Apple 的 iCloud API 在 Mac OS X 和 iOS 上的不同版本的应用程序之间同步应用程序数据 如果开发人员拥有 Windows 版本的应用程序 该版本是否也可以使用 iCloud 将应用程序数据与 M
  • 如何在 Firebase Analytics 事件中报告参数

    我用过Fabric with iOS在此之前 在同一分析事件中报告自定义参数非常容易 如下所示 Answers logCustomEvent withName saved border customAttributes image inde
  • 在 IOS 中从 iPhone 删除资产(图片或视频)

    我正在开发一个 Iphone 应用程序 我可以使用 Assetslibrary 枚举资产并将它们加载到表视图中 用户可以在应用程序中删除一行 图片 视频 但如何直接从我的应用程序更新 Iphone 相册 否则 刷新时 表视图将重新加载之前删
  • iOS 上的 OpenCV - VideoCapture 属性始终返回 1

    我一直在尝试构建一个简单的 OpenCV iOS 应用程序 该应用程序从捆绑包中加载视频并查询其帧数 持续时间等 然后它将尝试从中获取各个帧 不幸的是 当我使用VideoCapture类中 所有属性返回值 1 然后我尝试导航到frame 1
  • WKWebView 未打开自定义 URL 方案(js 在新窗口中打开自定义方案链接)

    我有一个WKWebView在我的应用程序中 我不使用UIWeb视图 因为由于某种奇怪的原因 它无法正确打开包含大量 JS 代码的网页 当我点击链接时自定义 url 方案 scm 它确实nothing My code void viewDid
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 启动深色或浅色模式的图像

    如何为深色模式和浅色模式选 择一组不同的启动图像 我有一个 LaunchImages 集 当应用程序启动时 会显示一个图像 对于浅色模式 这似乎不错 但是如果我尝试在设置为深色模式 iOS 13 的设备上打开我的应用程序 则该图像看起来很糟
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • iOS:滚动视图仅在键盘出现后才起作用

    我制作了滚动视图 其中有很多文本字段 我添加了更新的 TPKeyBoardAvoidingScrollView 并将其添加到滚动视图的文件所有者中 我在 h 文件中添加了插座 在 m 文件中综合并添加了行 self view addSubv
  • iOS UITableViewCell cell.imageView 设置圆角

    嘿我正在尝试设置cell imageView s cornerRadius 但似乎不起作用 cell imageView layer cornerRadius 9 它会起作用还是我应该添加自定义UIImageView在我的牢房里有圆角吗 我
  • 如何重新定位或移动 Google Maps SDK 上的当前位置按钮?

    如何将 Objective C 中的当前位置按钮移至我的偏好 现在 我已启用它 但底角有东西挡住了它 Thanks 您可以使用 padding 将按钮向上移动 self mapView padding UIEdgeInsets top 0
  • 如何为 NSAttributedString 内的文本设置“隐藏”属性?

    我有一个 Cocoa 应用程序NSTextView控件将其文本保存在NSAttributedString 实际上我相信这是一个NSMutableAttributedString 我可以轻松地在该字符串内的不同字符范围上设置和修改不同的文本属
  • 查找已用应用程序名称的捆绑包/开发人员

    我正在尝试将应用程序上传到应用程序商店并收到以下错误 很容易理解 The App Name you have entered has already been used 该应用程序不在 iTunes 上 有什么方法可以找出谁拥有该应用程序或
  • NSTimer 不触发选择器

    在带有 ARC 的 ios5 0 中 在我的 rootviewcontroller 中 我调用由应用程序委托持有的安全管理器对象中的方法 在该方法中 我设置计时器如下 NSTimer timer NSTimer scheduledTimer
  • UITableView 滑动删除 iOS 上的手势冲突

    我的手势识别器有问题 我的目标是在表视图中实现使用滑动删除 但我认为其他手势是相互冲突的 我正在使用这个库romonthego REFrostedViewController https github com romaonthego REF
  • 如何将 LC_LOAD_DYLIB 命令插入 Mach-O 二进制文件或将静态库加入现有二进制文件 (IOS)

    这是我第一次在 stackoverflow 上提问 我很绝望 我的任务是加载 dylib 或将静态库加入到 IOS 设备的现有可执行文件中 我将使用static void attribute constructor initialize v
  • 如何使用 Core Graphics 在我的触摸位置绘制一个圆圈?

    新程序员来了 我在尝试使用 Core Graphics 在触摸位置周围绘制描边弧时遇到问题 我有绘制圆圈的方法工作正常 并且我已经测试并在点击屏幕时注册触摸 但是当我尝试在点击时调用绘制圆圈的方法时 我收到错误 CG ContextBlah
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图

随机推荐

  • 如何使用domains.google.com 验证我的自定义域

    如何使用验证我的自定义域domains google com如果 它不允许重复的密钥 并且 firebase 托管需要重复的密钥条目 并且 firebase 需要具有相同主机的 2 个文本条目 Google Domains 中的 DNS 记
  • UIPageControl 中的问题

    pageControl UIPageControl alloc initWithFrame CGRectMake 153 356 38 36 pageControl userInteractionEnabled YES pageContro
  • Google Maps SDK 中的自定义注释视图

    我创建了一个基于地图的 iOS 应用程序 其中我想使用 iOS 版 Google Maps SDK 而不是 Mapkit 我找到了文档 但没有找到与自定义注释视图相关的方法 任何人都可以为我提供解决方案创建自定义注释视图 信息窗口 以及如何
  • 在数学模式下将变量写为下标

    我正在尝试绘制一些数据 使用 for 循环来绘制分布 现在我想根据循环计数器将这些分布标记为数学符号中的下标 这就是我现在的处境 import matplotlib pyplot as plt import numpy as np impo
  • ASP.NET MVC 使用 UIHint 属性生成 DropDownList

    我想知道如何使用 UIHint 属性生成 DropDownList 我已经自定义了一些预定义属性 但我不知道如何继续生成 DropDownList 这是我对上一个的处理方式 我想以类似的方式使用它 public class CartProd
  • 使用 apache 检查请求中是否存在标头

    如何检查标头是否存在 我不想检查该值是否与 不同 我想使用以下方法检查它是否确实存在 重写条件 我怎样才能在 htaccess 文件中做到这一点 anhubhava 的回答很有用 但逻辑 颠倒了 它应该是 RewriteEngine On
  • Selenium 使用 javascript 获取元素的类属性

    我正在使用 Selenium 用 Ja vascript 编写测试自动化 尝试提取 DOM 元素的类属性对我来说不起作用 这是我的代码 var webdriver require selenium webdriver var driver
  • Java中的顶级类是什么?

    Java中的顶级类是什么 Java中顶级类的定义是什么 我知道这是一个基本问题 但我找不到这个问题的明确而简单的答案 它只是任何不是嵌套类的类 如果您的文件是 Foo java 并且您的类是 Foo 那么它是顶级类 in Foo java
  • iOS:popViewController 意外行为

    我一直在互联网上寻找解决方案 我什么也找不到 所以 我正在使用 UINavigationController 我将两个 UIViewController 推到上面 在第二个推送的 ViewController 中 我正在执行以下代码 voi
  • 在 iOS 6 中,UIViewController 是否可以支持比其父级更多的界面方向?

    iOS 6 中自动旋转的变化似乎让这变得异常困难 或者说不可能 他们似乎在推行这样的理念 子视图控制器不应覆盖其父视图控制器的自动旋转行为 这使得很难完成我想做的事情 我有一个必须纵向显示的视图控制器 它以模态方式推动另一个视图控制器 它是
  • 上下文切换死锁

    在 VS 2008 中调试我的程序时 我遇到了以下错误 CLR 在 60 秒内无法从 COM 上下文 0x34fc1a0 转换到 COM 上下文 0x34fc258 拥有目标上下文 单元的线程很可能执行非泵送等待或处理非常长时间运行的操作而
  • 将原子 int 向量转换或转换为 int 向量的有效方法

    我确实有一个整数向量 我想确保增量操作发生线程安全 所以我使用std vector
  • 计时器不定期更新并“跳过”一秒(Silverlight 4 DispatcherTimer)

    对于以下问题 我希望得到一些帮助 您可以在我的网站上看到这个问题现场扑克百叶窗计时器 http www pokerdiy com poker blinds timer aspx 主时钟 盲定时器倒计时 从 20 00 开始 然后跳转到 19
  • 自定义 UINavigationController UIToolbar 背景图片

    我有一个 iPhone 应用程序使用UINavigationController并希望使用自定义背景图像自定义元素 我能够为UINavigationController s UINavigationBar使用 Objective C 类别很
  • Android 推送通知

    我参考了链接a link http www vogella de code de vogella android c2dm codestartpage html开发推送通知 但在运行时向我显示 UI main xml 我应该如何创建推送通知
  • 单击时选项菜单不会显示第一个选项(Tkinter)

    我添加了一个OptionMenu小部件到我的代码 并分配一个列表作为它的选项 事情是这样的 z StringVar z set userList 0 usersOption OptionMenu frame1 z userList comm
  • head() 函数在“for”循环中不起作用?

    我尝试使用 for 循环打印出几行 这是代码 奇怪的是它不适用于 head 函数 如果我更换它就可以了head with print kw id c a b keyword text data frame col c a b col2 c
  • 为什么 TFS 忽略我的解决方案中的项目?

    我的解决方案中有多个项目位于 TFS 2010 存储库中 最近几天 我向此解决方案添加了大约 5 个新项目 我发现对于其中一个项目 项目文件本身不会签入 TFS 该项目中包含的所有工件都工作正常 他们已签入 我可以在团队资源管理器中看到他们
  • 错误代码 220 - 尝试转发时“您的凭据不允许访问此资源”

    当我试图得到https api twitter com 1 1 statuses retweets 21947795900469248 json https api twitter com 1 1 statuses retweets 219
  • 我可以在 iOS 7 上手动提示用户登录 Game Center 吗?

    根据 Apple 的 Game Center 编程指南 此代码设置了一个身份验证处理程序 如果您在游戏开始时运行此命令 第一次运行它时 如果用户尚未登录 它将提示用户登录 void authenticateLocalPlayer GKLoc