我已经在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");
});
});
}
我也尝试在iOS中使用this.file.documentsDirectory,但仍然没有得到任何错误或成功的输出。
downloadURL来自firebaseStorage链接,但我也用普通的下载链接进行了测试。
我认为这与权限有关,但还没有找到解决方案。另一个假设是,在iOS上存在多个线程的限制,大约有30-100个promise活动。
但奇怪的是缺少错误消息,它只是卡住了,没有一个下载完成。
任何帮助都将不胜感激!
编辑:
我仍然没有找出问题的原因,但与此同时,Ionic发布了Transfer插件的新版本,现在在官方文档中称为FileTransfer。一旦我将我的代码更改为使用新的FileTransfer插件,问题就消失了。
我希望这能帮助那些遇到同样问题的人。