2

GKSession sendDataToAllPeers:withDataMode:error: 是异步的......或者我理解。除了发送应用程序级 ACK(这将非常笨拙)的对等方之外,是否有办法找出它何时完成发送?

M。

4

2 回答 2

1

当你创建你的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:

于 2010-06-27T05:48:20.450 回答
0

当你这样做

[session sendDataToAllPeers:data withDataMode:GKSendDataReliable error:nil];

如果数据排队等待传输,它将返回“是”,如果没有正确排队,它将返回“否”。如果您为“错误”参数指定了某些内容,则问题将保存在那里。

至于确认消息实际上已到达收件人,我在文档中找不到任何内容(没有让收件人发送确认收到的消息)。如果您使用 GKSendDataReliable 作为模式,它将继续尝试尽可能多地发送消息,直到连接超时。似乎您最好的选择是使用可靠模式,检查它是否正确排队,如果您需要在收到消息后做出反应,请发送确认。

于 2010-10-04T16:39:07.763 回答