代码之家  ›  专栏  ›  技术社区  ›  Martin Cowie

GKSession发送数据oAllPeers:带数据模式:错误:is asynchronous-如何获取何时完成的消息?

  •  2
  • Martin Cowie  · 技术社区  · 15 年前

    GKSession发送数据oAllPeers:带数据模式:错误:是异步的。。。或者我是这么理解的。除了对等端发送应用程序级的ACK(这将是非常笨拙的)之外,有没有一种方法可以确定何时完成了发送?

    M。

    2 回复  |  直到 15 年前
        1
  •  1
  •   typeoneerror    15 年前

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

        2
  •  0
  •   Pablo    15 年前

    当你这么做的时候

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

    如果数据排队等待传输,它将返回“是”;如果数据排队不正确,它将返回“否”。如果您为“error”参数指定了一些内容,问题将保存在那里。

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

    推荐文章