gpt4 book ai didi

ios - 删除 WithCompletionHandler 导致退出游戏中心

转载 作者:行者123 更新时间:2023-11-29 10:43:46 26 4
gpt4 key购买 nike

我正在使用 GKTurnBasedMatch 的 removeWithCompletionHandler 以编程方式在需要时从 Game Center 中删除旧的(已完成,即状态 = GKTurnBasedMatchStatusEnded)基于回合的比赛(为了避免额外的加载负担,我想将已完成比赛的数量保持在最低限度) ).我没有收到任何错误,匹配项已正确删除。但是,大多数时候我这样做时,我的用户会被踢出 Game Center,因此本地玩家不再经过身份验证。这发生在 iOS7 上,包括 iPhone 和 iPad。

有人遇到过吗?有什么解决办法吗?

注意:我最好不要从 GC 中删除匹配项,因为我使用内部业务逻辑来确定应向用户列出哪些匹配项并显示,比方说,仅显示 10 个(未完成的)最近的匹配项。但是,我担心 GC 中可能会保留数百场比赛,当我必须列出正在进行的比赛时,这可能会减慢与 GC 的交互。

最佳答案

如果您在另一个 Game Center API 调用的完成处理程序内调用 removeWithCompletionHandler,那么您可能会遇到困扰我一段时间的相同问题。我今天尝试的解决方案涉及简单地延迟对 removeWithCompletionHandler 的调用几秒钟,如下所示:

[match performSelector:@selector(removeWithCompletionHandler:) withObject:^(NSError *error) { /* callback code here */ } afterDelay:3.0];

对我来说,这很有效,但意味着我必须重新做一些与显示事件游戏相关的事情……所以如果这个解决方案适合你,请小心。此外,值得注意的是,3 秒延迟是我选择的任意值,它对我有用。

在我的例子中,我在 GKTurnBasedMatch 上的各种退出方法的完成处理程序 block 内调用 removeWithCompletionHandler。

我想在 Game Center 端存在一些问题,两个请求不能如此紧密地放在一起而不会导致这样的灾难。当我慢慢逐步完成对 Game Center 的调用时,问题从未发生在我身上这一事实证明了这一点。

编辑

这里有一些很酷的消息;似乎他们已经修复了 iOS 8 中的错误。我构建了一个应用程序来演示错误报告目的的错误(最初用于 iOS 7)。我已经测试了在 iOS 8 中运行的同一个应用程序,该错误似乎已被消除。

最后。

IMO,您现在应该考虑添加 removeWithCompletionHandler 调用。

关于ios - 删除 WithCompletionHandler 导致退出游戏中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23200985/

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