当前位置: 首页 > 面试题库 >

在更新到iOS 8.3和Swift 1.2之后,endTurnWithNextParticipants不会触发receiveTurnEventForMatch

连德义
2023-03-14
问题内容

自从更新到iOS8.3以来,有没有人注意到基于回合的比赛通知的任何更改?在我的应用中,当我调用endTurnWithNextParticipants时,在升级之前,这导致通知发送给对手,这将触发在他们的设备上调用receiveTurnEventForMatch,但情况不再如此。当对手终止应用程序并重新启动应用程序时,他们可以看到轮到他们了,因此游戏中心的比赛已按照参与顺序正确更新,但这似乎不再动态生效。

有人看到吗?我希望这只是游戏中心沙盒环境中的一个临时故障。

我向苹果提出了一个错误报告,以查看它实际上是否是错误,或者我们需要了解的iOS8.3中是否存在一些未记录的行为更改。


问题答案:

更新: Apple已对错误报告做出了回应:

请在iOS 8.4 beta
4(内部版本:12H4125a)中验证此问题,并使用结果更新您的错误报告,网址为http://bugreport.apple.com/。

iOS 8.4 beta 4(Build:12H4125a)
https://developer.apple.com/ios/download/发表于2015年6月9日

不幸的是,我无法在我的设备上安装iOS 8.4 beta 4,无法告诉您它是否已修复。如果您有任何机会,请分享。

我已向Apple提交了有关此问题的错误报告,并将在他们做出回应后在此处发布更新。

我的回合制游戏具有此解决方法。看起来很糟,但它又能正常工作-也许对您有帮助。

- (void)sendGameStateWith:(NSMutableDictionary *)data
{
    if (self.match) {
        NSData *matchdata = [NSKeyedArchiver archivedDataWithRootObject:data];

        GKTurnBasedParticipant *opponent = [self.match.participants objectAtIndex:0];
        GKTurnBasedParticipant *localPlayer = [self.match.participants objectAtIndex:1];
        if ([self.localPlayer.playerID isEqualToString:opponent.playerID]) {
            opponent = [self.match.participants objectAtIndex:1];
            localPlayer = [self.match.participants objectAtIndex:0];
        }

        // HINT: Remove this workaround when Apple has fixed it. 
        [self.match saveCurrentTurnWithMatchData:matchdata completionHandler:^(NSError *error) {
            if (error) {
                NSLog(@"Error on saveCurrentTurnWithMatchData");
                [self sendGameStateWith:data];

            } else {
                [self.match endTurnWithNextParticipants:[NSArray arrayWithObjects:opponent, localPlayer, nil] turnTimeout:turnTimeout matchData:matchdata completionHandler:^(NSError *error) {
                    if (error) {
                        NSLog(@"Error: Send Game Center state");
                    } else {
                        NSLog(@"Sent Game Center state");
                    }
                }];
            }
        }];
    }
}


 类似资料:
  • 问题内容: 我目前正在使用基于Web的Twitter客户端,因此我使用了angular.js,node.js和socket.io。我通过socket.io将新的推文推到我的客户端,服务在其中等待新的推文。当一条新的推文到来时,该服务通过$ broadcast发送事件。 在我的控制器中是一个事件侦听器,其中传入的tweet在单独的函数中进行处理。此功能只是将新的推文推入我的推文范围。 现在,我的问题

  • 问题内容: 仅在真正更改数据的情况下,才有可能使用“更新后”触发器。我知道“新旧”。但是使用它们时,我只能比较列。例如“ NEW.count <> OLD.count”。 但我想要类似的东西:如果“ NEW <> OLD”,则运行触发器 一个例子: 关键是,有一个更新,但是 什么都没有改变 。但是无论如何,触发器都在运行。恕我直言,应该有一个没有的方法。 我知道我可以使用 如果现在b <> OLD

  • 问题内容: 我有两个表,其中一个命名如下 另一个表具有以下字段: SID CID Per 如何为以下内容编写触发器: 如果表h1-h0的任何字段中发生 更新,则使用以下值更新表中的列: ((总数为1s-总数为0s / (总数1s +总数0s))/ 100 在此先感谢 我开发了一个触发器,但是它不起作用,它在第11行说了错误,您能说出什么问题吗? 问题答案: 在定义触发器之前,请确保更改定界符。另外

  • 问题内容: 我希望该列始终为/ 。我正在使用AFTER UPDATE触发器来完成此操作。因此,如果要向该表中添加100次点击,我希望EPC自动更新。 我正在尝试: 并得到此错误: 我也尝试使用OLD,但也出现了错误。我可以在此之前做,但是如果我添加了100次点击,它将使用之前的#次点击作为触发条件(对吗?) 我应该怎么做才能做到这一点? 编辑-将在此运行查询的示例: 问题答案: 您无法 在 更新

  • 问题内容: 我试图将这个问题分解为最简单的例子。当请求是ajax时,使用更新的上下文呈现页面不会产生预期的结果。 views.py 当我第一次加载页面时,将打印“ ajax未运行”,templateVariable为“我未通过ajax更新”,并且页面按预期在h1标记中呈现。 当我单击testBtn时,我期望ajax请求触发if语句,更新上下文,并在h1标签中显示“我是由ajax更新”的页面。 相反

  • 问题内容: 在同一张表上更新后,如何在触发器中更新表的列? 这是触发条件: 现在当我像这样更新表时 这不起作用,因为我得到以下信息: 那么我到底该如何工作呢? 问题答案: 如果将触发器更改为而不是,可以这样操作: