2017-07-07 41 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