为啥当其他用户离线时 XMPPOutgoingFileTransfer 失败?

Posted

技术标签:

【中文标题】为啥当其他用户离线时 XMPPOutgoingFileTransfer 失败?【英文标题】:Why XMPPOutgoingFileTransfer fails when other user is offline?为什么当其他用户离线时 XMPPOutgoingFileTransfer 失败? 【发布时间】:2016-08-02 13:16:33 【问题描述】:

我正在使用 XMPPOutgoingFileTransfer 和 XMPPIncomingFileTransfer 来传输文件数据。当两个用户都在线时,我可以发送文件数据。但是当任何一个用户下线时,它就无法发送文件数据并调用以下委托。

    - (void)xmppOutgoingFileTransfer:(XMPPOutgoingFileTransfer *)sender
            didFailWithError:(NSError *)error

错误是

  Error Domain=XMPPOutgoingFileTransferErrorDomain Code=503 "<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>" UserInfo=NSLocalizedDescription=<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>

如何将文件数据发送给离线用户。 提前致谢。

【问题讨论】:

【参考方案1】:

在 XMPP 中,文件传输是在各方之间协商的。有多种用于文件传输的 XMPP 规范,但为了更好地了解其工作原理,您可以阅读其中之一,例如 XEP-0234 Jingle File Transfer。这基本上是会话启动,即直接在对等方之间或通过代理进行带外数据传输的协商。这是为实时传输而设计的(例如,很像电话,除了这是另一种数据类型)。

有新规范支持通过 HTTP 将文件上传到共享空间并通过链接共享进行下载:XEP-0363 HTTP File Upload。但是,您需要确保您的库和服务器支持它。

【讨论】:

非常感谢@Mickaël。

以上是关于为啥当其他用户离线时 XMPPOutgoingFileTransfer 失败?的主要内容,如果未能解决你的问题,请参考以下文章

当用户离线时,Firebase 身份验证会话会持续多长时间?

当用户在 quickblox 的 ios 中离线时获取消息

Firebase 离线支持:在用户离线时上传帖子,当用户在 iOS Swift 应用程序中在线时同步

当用户在Android中使用XMPP离线时向用户发送通知

用户离线时Openfire发送推送通知

当接收器离线时,socket.io 发出不工作