GKSession sendDataToAllPeers:withDataMode:error: 是异步的......或者我理解。除了发送应用程序级 ACK(这将非常笨拙)的对等方之外,是否有办法找出它何时完成发送?
M。
GKSession sendDataToAllPeers:withDataMode:error: 是异步的......或者我理解。除了发送应用程序级 ACK(这将非常笨拙)的对等方之外,是否有办法找出它何时完成发送?
M。
当你创建你的GKSession
,设置它dataReceiveHandler
像这样:
[self.gkSession setDataReceiveHandler:self withContext:nil];
处理程序是具有以下签名的方法(在这种情况下,这将在上面引用的“self”对象中);
- (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context;
当对等方接收到发送过来的数据时调用此方法,sendData:toPeers
并且sendDataToAllPeers:
当你这样做
[session sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil];
如果数据排队等待传输,它将返回“是”,如果没有正确排队,它将返回“否”。如果您为“错误”参数指定了某些内容,则问题将保存在那里。
至于确认消息实际上已到达收件人,我在文档中找不到任何内容(没有让收件人发送确认收到的消息)。如果您使用 GKSendDataReliable 作为模式,它将继续尝试尽可能多地发送消息,直到连接超时。似乎您最好的选择是使用可靠模式,检查它是否正确排队,如果您需要在收到消息后做出反应,请发送确认。