Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何回复GKTurnBasedExchange?GKLocalPlayerListener委托receivedExchangeReplies被间歇性调用_Ios_Game Center_Gkturnbasedmatch - Fatal编程技术网

Ios 如何回复GKTurnBasedExchange?GKLocalPlayerListener委托receivedExchangeReplies被间歇性调用

Ios 如何回复GKTurnBasedExchange?GKLocalPlayerListener委托receivedExchangeReplies被间歇性调用,ios,game-center,gkturnbasedmatch,Ios,Game Center,Gkturnbasedmatch,有一些帖子讨论了游戏中心的推送通知在沙箱中是如何相当不可靠的。然而,由于iOS9使沙盒变得模糊,所以我不确定为什么我的游戏中心推送通知如此不可靠 当我回复活动exchange时,很少通知发件人 [exchange replyWithLocalizableMessageKey:@"EXCHANGE_REPLY" arguments:@[] data:data completionHandler:^(NSError *error) { if (error)

有一些帖子讨论了游戏中心的推送通知在沙箱中是如何相当不可靠的。然而,由于iOS9使沙盒变得模糊,所以我不确定为什么我的游戏中心推送通知如此不可靠

当我回复活动exchange时,很少通知发件人

[exchange replyWithLocalizableMessageKey:@"EXCHANGE_REPLY" arguments:@[] data:data completionHandler:^(NSError *error) {

            if (error)
            {
                NSLog(@"");
            }
        }];
在senders设备上,如果刷新匹配数据,将看到挂起的答复。如果我处理了回复,一切都正常

这种方法也是如此:

- (void)sendExchangeToParticipants:(NSArray<GKTurnBasedParticipant *> *)participants
                          data:(NSData *)data
         localizableMessageKey:(NSString *)key
                     arguments:(NSArray<NSString *> *)arguments
                       timeout:(NSTimeInterval)timeout
             completionHandler:(void(^__nullable)(GKTurnBasedExchange *exchange, NSError *error))completionHandler

直到2020年10月,由于苹果后端的一个bug,交易所从未真正按照需要工作,也没有按照规定工作。然而现在,一位苹果工程师似乎暗示它已经被修复了——让我验证它是否有效。我打算使用我的公共项目尽快完成(我只需要更新Xcode):

进一步详情

基于回合的交换依赖于回合持有者在交换完成时得到通知,因此回合持有者可以解决它(提交给游戏中心)。但是,此通知从未推送到回合持有者

由于这个错误,我们制作的游戏必须依靠回合持有者在交换完成后重新加载游戏,我们的代码必须优雅地处理由于游戏数据不同步(由完成的交换引起)而导致的回合提交失败


在2020年世界大战期间,我与苹果公司进行了一对一的游戏中心会议,我报告了这个问题,并提供了确凿的证据(毕竟,这个漏洞自2010年就存在了),这让苹果公司的工程师信服了。他们花了3个月的时间回复我,我又花了3个月的时间回复他们-呵呵,让我们回到现在。

还有一点需要注意,我正在使用模拟器加上一个设备。根据这篇文章,我现在只试了两种设备:你今天试过了吗?在过去的几个月里,我一直在使用GC-API,而今天,我突然发现GC的所有问题都开始正常工作了。@user523234,不,我没有。实际上,它确实经历了一段时间,但没有达到预期效果。@user523234我遇到了一个问题,我没有收到来自
endTurnWithNextParticipants
的推送通知,在阅读了您的评论后,我今天刚刚尝试了它,它起了作用。您找到了导致推送的原因吗“与名为com.apple.gamed的服务的连接…”。你知道这条消息的意思吗?
The connection to service named com.apple.gamed was interrupted, but the message was sent over an additional proxy and therefore this proxy has become invalid.