gpt4 book ai didi

iphone - 游戏中心登录提醒

转载 作者:行者123 更新时间:2023-12-03 18:28:36 24 4
gpt4 key购买 nike

在我使用 GameCenter 开发的游戏中,我想处理以下场景:

  1. 用户启动游戏。他会看到系统警报,提示他登录 GameCenter。他暂时忽略它。
  2. 一段时间后,用户想要登录 GameCenter 并单击(例如)排行榜菜单项。他暂时选择了取消而不是登录。
  3. 该过程会重复多次。最终用户确实想要登录 GameCenter。他再次单击“排行榜”菜单项。

在我的测试中,我发现调用“authenticateWithCompletionHandler”(由 Apple 的示例 GameCenterManager 调用)引发的警报弹出窗口仅出现有限次数(4 或 5 次),建议登录 GameCenter。最后一次出现时,它显示“游戏中心已禁用,请使用游戏中心应用程序登录以启用”之后”。之后,调用authenticateWithCompletionHandler不再执行任何可见操作 - 根本没有提示。

玩FruitNinja 我尝试复制这个。然而,在他们的情况下,每次我单击 GameCenter 项目(例如成就)时,都会出现“Game Center 已禁用”的弹出窗口。

我想做的是复制该功能:也就是说,如果您没有登录到 GameCenter,则每次单击排行榜菜单项时都会显示标准游戏中心警报。

有没有办法了解标准的“登录游戏中心”警报是否已出现,或者强制它始终出现(而不仅仅是前几次尝试)?

最佳答案

这里有一个解决此问题的想法:

无论“GCauthenticateWithCompletionHandler”-请求是否被取消

  • 用户在对话框中点击“取消”

或者由于以下事实

  • GC 在设备上被禁用(这会在用户取消警报对话框 3 次后发生(至少在 iOS 5 中))

您将始终收到一个 NSError,代码为 2,表示“请求的操作已被取消。”。

我能找到的唯一区别是authenticateWithCompletionHandler-Request和completion-Handler执行之间传递的时间。

因此,在发送请求时,我节省了时间:

requestTime = [NSDate date]; 

在我的完成处理程序中,我测量耗时:

NSDate* now = [NSDate date];
CFTimeInterval elapsedTimeSinceAuthenticationRequest = [now timeIntervalSinceDate:requestTime];
NSLog(@"time Elapsed: %f", elapsedTimeSinceAuthenticationRequest);

如果用户取消了请求,所花费的时间将比 GC 取消操作所花费的时间明显更长。在我的测试中,用户至少需要一秒钟才能取消对话框,而 GC 取消的请求则需要不到 0.1 秒(在我的 iPhone 4 上)

当然,这些值可能会有所不同,具体取决于代码运行的设备以及处理器当前正在忙的其他事情。我已经检查过的一个陷阱是应用程序启动:如果您按照 Apple 的建议在 applicationDidFinishLaunching 期间发送authenticationRequest,则在我的情况下,GC 需要更长的时间才能取消请求,因为设备正忙于加载 View 以及启动所需的任何内容该应用程序。

因此,请告诉我您是否尝试过此解决方案以及它是否对您有效,一旦我完成进一步的测试,我也会...

关于iphone - 游戏中心登录提醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com