我已经在 Android 上开发了一个 Ionic 2 应用程序,现在正试图将它带到 iOS 上。
该应用程序在初始登录时会下载大量文件,我使用Ionic-Native Transfer 插件来完成此操作。在 Android 上一切正常,但在 iOS 上,应用程序似乎卡在了 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 插件,问题就消失了。
我希望这可以帮助其他面临同样问题的人。