我在Android上开发了一款Ionic 2应用程序,现在正尝试将其用于iOS。
该应用程序在初次登录时下载了大量文件,我使用Ionic-Native Transfer plugin进行了下载。在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插件,问题就消失了。
我希望这有助于其他遇到同样问题的人。
答案 0 :(得分:0)
我还没有弄清楚问题的原因,但与此同时,Ionic发布了一个新版本的Transfer Plugin,现在在官方文档中称为FileTransfer。一旦我更改了我的代码以使用新的FileTransfer插件,问题就消失了。
我希望这有助于其他遇到同样问题的人。