没有调用didFinishReceivingResourceWithName。

问题描述 投票:3回答:1

我在做的一个应用上通过MC发送视频,didStartReceivingResourceWithName被正确调用。与该回调相关联的NSProgress对象达到101.0%,然后didFinishReceivingResourceWithName从未被调用。你有什么想法吗?下面是每个环节的代码。

func session(session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, withProgress progress: NSProgress) {
    print("Did start receiving resource")
    dispatch_async(dispatch_get_main_queue()){
        self.progressTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "progressManager", userInfo: nil, repeats: true)
        self.progress = progress
    }
}
func session(session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, atURL localURL: NSURL, withError error: NSError?) {
    dispatch_async(dispatch_get_main_queue()){
        self.status.text = "Recieved!"
    }
    self.progressTimer.invalidate()
    let destinationPath  =
    NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("movie.mov")
    let fileManager: NSFileManager = NSFileManager.defaultManager()
    do{
        try fileManager.moveItemAtURL(localURL, toURL: destinationPath)
    }
    catch let error as NSError {
        print(error)
    }
    print("Did finish receiving resource")
}
ios swift multipeer-connectivity
1个回答
0
投票

我在使用AVAssetWriter创建的视频文件调用sendResource时遇到了这个问题。原来,我在AVAssetWriter完成编写视频之前,就在视频文件上调用sendResource。在我修改了我的代码,在.finishWriting的完成处理程序中调用sendResource之后,一切都按照预期的那样工作了。

© www.soinside.com 2019 - 2024. All rights reserved.