【问题标题】:get file path when downloading with NSURLSession使用 NSURLSession 下载时获取文件路径
【发布时间】:2014-11-05 11:04:55
【问题描述】:

我想在下载的同时播放音乐,所以我用本地文件播放音乐,如何在使用 NSURLSession 下载时获取 tmp 目录中的文件路径。

方法 URLSession:downloadTask:didFinishDownloadingToURL: 比只在文件下载时调用,我该怎么办

【问题讨论】:

  • 为什么要在下载结束前知道路径?在下载结束之前,没有文件,也没有路径。你的问题没有意义。
  • 音乐在线,所以我想在播放前缓存部分数据
  • 那你就不能使用下载任务了。

标签: ios objective-c afnetworking nsurlsession


【解决方案1】:

如果您想在下载文件时获取文件位置,请不要使用下载任务。例如,创建一个NSURLSessionDataTask 并自己将其流式传输到持久存储(例如,为持久存储中的本地文件创建自己的NSOutputStream 并打开它,然后在didReceiveData 中,只需将数据写入流,然后关闭完成后的流)。然后你可以对流/文件做任何你想做的事情。如果使用 AFNetworking,我相信 AFHTTPRequestOperation 也会为此目的公开一个 outputStream 属性。

【讨论】:

  • AFNetworking 3 删除了AFHTTPRequestOperation。如果您使用的是 AFNetworking 3,则必须以某种方式在AFHTTPSessionManager 上使用setDataTaskDidRecieveDataBlock: 方法来执行@Rob 上面描述的操作。
  • 嘿,我没有找到方法 'didReceiveData' 你能告诉我在哪里可以得到方法吗 谢谢。
  • 它是NSURLSessionDataDelegate 协议的一部分。因此,使用sessionWithConfiguration:delegate:delegateQueue: 创建您自己的NSURLSession 并在您的委托中实现didReceiveData
【解决方案2】:

就像@matt 所说的那样,在下载结束之前,您只能等待。 但您可以考虑使用AudioStreamer 在下载时播放音乐。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-29
    • 2018-05-29
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2020-02-22
    相关资源
    最近更新 更多