有一些帖子讨论了 Game Center 的推送通知在沙盒中是如何相当不可靠的。但是,沙盒被 iOS 9 混淆了,所以我不确定为什么我的 Game Center 推送通知如此不可靠。
当我回复活跃的交易所时,发件人很少收到通知。
[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
在这一点上,我认为我最好的选择是运行我自己的推送通知逻辑来触发更新匹配数据。那或者我已经读过发送提醒更可靠,尽管我相信这有限制。
更新
我试过只使用设备而不是模拟器。同样的问题。看起来这是一个众所周知的问题。本书第 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.