离子设备插件返回null

时间:2019-09-03 22:11:40

标签: ionic4 ionic-native

无论我做什么还是尝试我都无法获得有关该设备的信息。我正在使用离子4的最新版本。

由于我在网上找到的基本上都是

  • 不要在浏览器上执行
  • 一个一个地获取值

这当然不是问题所在。我没有这样做,我有科尔多瓦可用,等等。

我正在android和ios设备上进行测试。我在服务中处理此问题。我用按钮调用函数,所以一切都比不上,一切都准备好了。这是我要工作的代码:

import { Injectable } from '@angular/core';
import { Device } from '@ionic-native/device/ngx';
import { Platform } from '@ionic/angular';

@Injectable({
  providedIn: 'root'
})
export class InitialService {

  eldevice: any = '';

  constructor(
    private device: Device,
    private platform: Platform
  ) {}

  async setup() {
    if (this.platform.is('cordova')) { // es movil

      this.eldevice = await this.storage.get('device');

      if (this.eldevice == null) { // nuevo device

        this.eldevice.platform = this.device.platform;
        this.eldevice.version = this.device.version;
        this.eldevice.uuid = this.device.uuid;
        this.eldevice.manufacturer = this.device.manufacturer;

        console.log('datos sin await', this.eldevice);

        this.eldevice = await this.storage.set('device', this.device);

      } else { // device conocido
        console.log('datos guardados', this.eldevice);

      }
    } else { // es virtual
      console.log('virtual');

    }
  }

  clearData() {
    this.storage.clear();
    this.eldevice = null;
  }
}

1 个答案:

答案 0 :(得分:0)

已更新:

任何cordova插件都需要您等待平台处于“就绪”状态。 因此,在调用/使用插件之前,您需要调用platform.ready()方法并在回调中或“等待”之后调用特定的插件函数。

还要查看您的setup()方法,您似乎想尝试访问在存储检查后为其分配了'null'的对象的属性。查看下面代码中的注释:

v_j