Swift XMPPFramework完成文件传输

Swift XMPPFramework完成文件传输,swift,xmppframework,Swift,Xmppframework,我用我的项目,我试图发送一张照片给对方,但我卡住了 文件传输在第一次运行得很好,但是当尝试发送另一个文件时,它失败了,并显示消息“传输已在进行” 我搜索了很多,但是没有关于这个案例的描述/建议/答案。我应该如何解决这个问题 我的代码在这里: 按下按钮开始发送 委托方法 +++附加的 我“成功”发送和接收第一个文件,但无法发送第二个文件。它只会返回一条错误消息“传输已在进行中”,文件传输永远不会开始。只需删除此代码: try outgoingFileTransfer.start() 你以

我用我的项目,我试图发送一张照片给对方,但我卡住了

文件传输在第一次运行得很好,但是当尝试发送另一个文件时,它失败了,并显示消息“传输已在进行”

我搜索了很多,但是没有关于这个案例的描述/建议/答案。我应该如何解决这个问题

我的代码在这里:

按下按钮开始发送

委托方法

+++附加的

我“成功”发送和接收第一个文件,但无法发送第二个文件。它只会返回一条错误消息“传输已在进行中”,文件传输永远不会开始。

只需删除此代码:

    try outgoingFileTransfer.start()

你以多快的速度完成第二个文件?您可能在
transferSuccess
cleanUp
之间遇到竞争条件。Idk第二个文件传输的速度有多快。它不会尝试发送,只会显示一条错误消息。“转让已在进行”。但是,我正在使用一个小尺寸的图像进行测试(大约300x300),我认为这与这个问题无关。我的意思是,如果你在第一个图像真正完成之前开始第二个图像,它将不起作用。我浏览了源代码。是的,除非第一个源代码的全部被完全传输,否则它不会完成,因为我没有把代码放在流的末尾。但我想要的是“如何在接收到所有数据后结束流”。我找不到任何方法来做这件事。你好@CyanLee我也面临这个问题。如果你知道这个问题的解决方案。
func xmppOutgoingFileTransfer(_ sender: XMPPOutgoingFileTransfer!, didFailWithError error: Error!) {
    print("There was an error for sending a file. \(error.localizedDescription)")

    sendButton.isEnabled = true
}

func xmppOutgoingFileTransferDidSucceed(_ sender: XMPPOutgoingFileTransfer!) {
    print("Sending a file succeed. pray for receiving with no problem.")
    sendButton.isEnabled = true
}

func xmppIncomingFileTransfer(_ sender: XMPPIncomingFileTransfer!, didFailWithError error: Error!) {
    print("Incoming file transfer failed with error : ", error)
}

func xmppIncomingFileTransfer(_ sender: XMPPIncomingFileTransfer!, didReceiveSIOffer offer: XMPPIQ!) {

    print("Incoming File Transfer did receive SI Offer. Accepting...")

    print("Offer : ")
    print(offer.prettyXMLString())

    sender.acceptSIOffer(offer)
    //offer.name
}

func xmppIncomingFileTransfer(_ sender: XMPPIncomingFileTransfer!, didSucceedWith data: Data!, named name: String!) {

    print("I got something...")

    if let receivedString = String(data: data, encoding: .utf8){
        let alert = UIAlertController(title: "You\'ve got :", message: receivedString, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))

        present(alert, animated: true, completion: nil)

        print("OK, this is a text file.")
        print("Incoming file transfer did Succeed. Hooray!")
    }else if let receivedImage = UIImage(data: data){
        receivedImageview.image = receivedImage

        print("OK, this is an image file.")
        print("Incoming file transfer did Succeed. Hooray!")
    }else{
        print("I got something, but I can\'t convert it. what is this?")
    }

}
    try outgoingFileTransfer.start()