【发布时间】:2017-12-11 12:55:39
【问题描述】:
我已经在 Android 上开发了一个 Ionic 2 应用程序,现在正尝试将它带到 iOS 上。
应用程序在初次登录时会下载大量文件,我使用 Ionic-Native Transfer plugin 进行下载。在 Android 上一切正常,但在 iOS 上,App 似乎卡在了 fileTransfer.download() 函数的承诺中,甚至没有抛出错误。
示例代码:
private downloadFile(downloadURL: string, filename: string) {
return new Promise((resolve, reject) => {
this.fileTransfer.download(downloadURL, this.file.dataDirectory + filename, true).then(_ => {
console.log("download of " + filename + " complete");
resolve("download finished");
}).catch(err => {
console.log(err);
reject("download error");
});
});
}
我也尝试使用 this.file.documentsDirectory 代替 iOS,但我仍然没有收到任何错误或成功输出。
downloadURL 来自 firebaseStorage 链接,但我也使用通常的下载 URL 对其进行了测试。
我认为它确实与权限有关,但尚未找到解决方案。另一个假设是,iOS 上的多线程是有限的,大约有 30-100 个承诺。
但奇怪的是缺少错误消息,它只是卡住了,没有一次下载完成。
感谢任何帮助!
编辑:
我还没有弄清楚问题的原因,但与此同时,Ionic 发布了新版本的 Transfer Plugin,在官方文档中称为 FileTransfer。一旦我将代码更改为使用新的 FileTransfer 插件,问题就消失了。
我希望这可以帮助遇到同样问题的其他人。
【问题讨论】:
-
您是否看过一些 Josh Morony 的视频,在 iPhone 上运行时调试 Ionic 应用程序? youtube.com/watch?v=9J8AxhDxtTE&feature=youtu.be
-
感谢该链接,我现在通过更新到最新的 Ionic FileTransfer 插件解决了我的问题,该插件在我第一篇文章和今天之间发布。我在上面编辑了我的帖子。
-
很高兴你解决了它。你知道可以回答你自己的问题。其他人对此表示赞成/喜欢。因此,如果他们认为这是已回答的,那也会对他们有所帮助。
标签: ios angular ionic2 file-transfer ionic-native