2017-07-07 33 views
8

我在Android上开发了一个Ionic 2应用程序,现在正试图在iOS上使用它。Ionic 2 fileTransfer.download不在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个承诺。

但奇怪的是缺少的错误信息,它只是卡住,没有一个下载完成。

任何帮助表示赞赏!

编辑:

我还没有想出问题的原因,但在此期间,离子释放的传输插件,现在被称为文件传输在官方文档的新版本。一旦我将我的代码更改为使用新的FileTransfer插件,问题就消失了。

我希望这可以帮助其他面临同样问题的人。

+0

你见过一些Josh Morony的视频在iPhone上运行时调试离子应用吗? https://www.youtube.com/watch?v=9J8AxhDxtTE&feature=youtu.be – JGFMK

+0

感谢您的链接,我现在解决了我的问题,通过更新到我的时间之间发布的Ionic的最新FileTransfer插件第一篇文章和今天。我编辑了我的帖子。 –

+0

很高兴你解决了它。你知道可以回答你自己的问题。其他人赞成/赞成这一点。所以如果他们看到这个答案,它也会帮助他们。 – JGFMK

回答

0

我还没有找到问题的原因,但与此同时,Ionic发布了新版本的Transfer Plugin,现在在官方文档中称为FileTransfer。一旦我将我的代码更改为使用新的FileTransfer插件,问题就消失了。

我希望这可以帮助其他面临同样问题的人。

+1

即使使用新的离子本机FileTransfer插件,我也有同样的问题。 – askilondz