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

有一些post讨论了Game Center的推送通知在沙盒中是如何相当不可靠的。 但是,沙箱是用iOS 9混淆,所以我不知道为什么我的游戏中心推送通知是如此不可靠。

当我回复主动交换时,发送者很less被通知。

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

在发件人设备上,如果我刷新匹配数据,我会看到待处理的答复。 如果我处理答复,一切正常。

这个方法也是一样的:

 - (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 

在这一点上,我想我最好的select是运行我自己的推送通知逻辑触发更新匹配数据。 这或我读过发送提醒更可靠,但我相信有限制周围的限制。

更新

我试过只使用设备而不是模拟器。 同样的问题。 看起来这是一个相当有名的问题。 甚至在第766页的这本书中都有提到。

更新

发送提醒没有帮助。

更新

通常在回复交易时,我会从GameKit得到这个错误。

 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.