cordova - ionic 文件传输插件在生产版本中不起作用

标签 cordova ionic2 cordova-plugins hybrid-mobile-app ionic3

我在 ionic3 应用程序中遇到了奇怪的问题。

让我详细描述一下我的情况:
实际上,我的 ionic 应用程序需要离线支持。所以每次调用 API 时,我都会将数据存储到本地存储中。并将图像从 api 下载到我的本地目录。这样当本地资源无法使用互联网时,我就可以获取数据和图像。

我正在使用此插件将图像从服务器下载到本地:
https://ionicframework.com/docs/native/file-transfer/

如果我运行以下命令,它工作正常:

ionic cordova run android

但是当我运行以下命令时它不起作用:
ionic cordova run android --prod

代码 :
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';

constructor(private transfer: FileTransfer, private file: File) { }

const fileTransfer: FileTransferObject = this.transfer.create();

download() {
  const url = 'http://www.example.com/file.pdf';
  fileTransfer.download(url, this.file.dataDirectory + 'file.pdf').then((entry) => {
    console.log('download complete: ' + entry.toURL());
  }, (error) => {
    // handle error
  });
}

我没有从控制台收到任何错误或问题。所以我不知道我错过了什么。还有配置好的本地存储权限。所以许可不是问题。

最佳答案

最后我找到了解决这个问题的方法!
首先你应该更新这个命令:

npm i @ionic/app-scripts@latest --save
npm i ionic-native@latest --save

并且可能在您的代码中的某个地方,您之前调用了与文件传输插件相关的任何内容
platform.ready.then()
就我而言:我注入(inject)了一些包含这样一行的服务:
this.fileTransfer = this.transfer.create();
我把它改成了这样:
this.platform.ready().then(() => {
  // Okay, so the platform is ready and our plugins are available.
  // Here you can do any higher level native things you might need.
  this.fileTransfer = this.transfer.create();
});

现在一切正常。

更多详情:

为什么这在 Debug模式下工作?

答案很清楚,因为在 Debug模式下,设备就绪事件绝对会在此之后调用很长时间来触发和文件传输!但是在生产模式下,设备就绪触发非常快,并且在此之前调用了文件传输。我希望这对你有帮助。

关于cordova - ionic 文件传输插件在生产版本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45818393/

相关文章:

Cordova 和 Google Analytics 插件

android - Cordova:无法使用 cordova-plugin-calendar 构建项目

cordova - npm run build = 没有图像

javascript - 使用 jquery 调用 finance.yahoo api

angular - 没有 UrlHelperService 的提供者

ios - 如何更改 Ionic 2 iOS 应用程序的位置访问描述?我正在为我的应用程序使用 cordova 地理定位插件

google-maps - 类型 'Promise<void>' 不可分配给类型 'Marker' 。属性 '_objectInstance' 在类型 'Promise<void>' 中缺失。 ionic 2

javascript - Android 的 Cordova 插件中是否有可用的 onDestroy Hook ?

angular - 如何修复 "Could not determine the dependencies of task ' :app:preDebugBuild'"in Ionic 4 Cordova

android - 无法在 ionic v2 中安装非原生 cordova 插件