Ale*_*lex 11 iphone gamekit game-center
在我使用GameCenter开发的游戏中,我想处理以下场景:
在我的测试中,我发现通过调用"authenticateWithCompletionHandler"(由Apple的示例GameCenterManager调用)引发的警报弹出窗口建议登录到GameCenter只出现有限次数(4或5).最后一次显示,它显示"游戏中心已禁用,请使用Game Center应用程序登录以启用"Afterwards".之后,调用authenticateWithCompletionHandler不再执行任何操作 - 根本没有提示.
玩FruitNinja我试图复制这个.但是,在他们的情况下,每当我点击GameCenter项目(例如,成就)时,会出现"禁止游戏中心"的弹出窗口.
我想要做的是复制功能:也就是说,如果您没有登录到GameCenter,则在您单击Leaderboard菜单项时始终显示标准游戏中心警报.
有没有办法了解标准"登录游戏中心"警报是否已经出现,或者强制它始终出现(而不仅仅是前几次尝试)?
这是一个解决此问题的想法:
无论"GC authenticateWithCompletionHandler"-Request是否被取消
或者由于这个事实
您将始终收到一个NSError,其代码为2,"请求的操作已被取消.".
我能找到的唯一区别是authenticateWithCompletionHandler-Request和completion-Handler的执行之间传递的时间.
所以在发送请求时我节省了时间:
requestTime = [NSDate date];
Run Code Online (Sandbox Code Playgroud)
在我的完成处理程序中,我测量经过的时间:
NSDate* now = [NSDate date];
CFTimeInterval elapsedTimeSinceAuthenticationRequest = [now timeIntervalSinceDate:requestTime];
NSLog(@"time Elapsed: %f", elapsedTimeSinceAuthenticationRequest);
Run Code Online (Sandbox Code Playgroud)
如果用户取消了请求,则与GC取消操作所经过的时间相比,通过的时间将显着延长.在我的测试中,用户至少花了一秒钟取消对话,而GC取消的请求花了不到0.1秒(在我的iPhone 4上)
当然,这些值可能会有所不同,具体取决于代码运行的设备以及处理器目前忙于处理的其他内容.我已经检查过的一个缺陷是应用程序启动:如果你在Apple建议的applicationDidFinishLaunching期间发送authenticationRequest,那么在我的情况下GC需要更长的时间才能取消请求,因为设备正忙于加载视图以及启动所需的任何内容该应用程序.
所以让我知道你是否尝试过这个解决方案,如果它对你起作用,我曾经做过进一步的测试......
该行为的结果是,在 N 次不成功的尝试之后 - 禁用应用程序的 GameCenter。重新启动应用程序或登录游戏中心即可使其恢复在线状态。
我忘记了我在哪个文档中读到过这个,但是有一个 Apple 文档解释了这种行为。
| 归档时间: |
|
| 查看次数: |
10739 次 |
| 最近记录: |