Как получить UUID устройства в ионной структуре

установлен плагин устройства cordova:

sudo cordova plugin add org.apache.cordova.device

затем скачал ngCordova и включил ng-cordova.min.js в папку js и также включил в index.html

следующий, что я сделал, вводится ngCordova следующим образом

angular.module('starter', ['ionic', 'starter.controllers','ngCordova'])

затем включается в контроллер следующим образом

angular.module('starter.controllers', [])

.controller('AppCtrl', function($scope, $ionicModal, $timeout, $ionicPlatform,$cordovaDevice)
but still getting the following errors

ReferenceError: device is not defined
at Object.getUUID (http://localhost:8100/js/ng-cordova.min.js:1:14929)
at new <anonymous> (http://localhost:8100/js/controllers.js:27:26)
at invoke (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11591:17)
at Object.instantiate (http://localhost:8100/lib/ionic/js/ionic.bundle.js:11602:23)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:14906:28
at updateView (http://localhost:8100/lib/ionic/js/ionic.bundle.js:42986:30)
at eventHook (http://localhost:8100/lib/ionic/js/ionic.bundle.js:42933:17)
at Scope.$broadcast (http://localhost:8100/lib/ionic/js/ionic.bundle.js:20605:28)
at $state.transition.resolved.then.$state.transition (http://localhost:8100/lib/ionic/js/ionic.bundle.js:34122:22)
at wrappedCallback (http://localhost:8100/lib/ionic/js/ionic.bundle.js:19197:81)

Можете ли вы сказать мне, что пошло не так?

Если есть другой способ прочитать UUID устройства, покажите мне направление к нему.

Ответ 1

wow выяснил, что я делал неправильно... через этот вопрос. http://forum.ionicframework.com/t/problem-to-use-ngcordova-device-is-not-defined/11979

когда мы тестируем другое устройство, которое имеет другую платформу, чем поддерживает кордова, это происходит. это было полезным открытием для меня.

Ответ 2

Да, есть другой способ. Для этого вам просто не нужна ngCordova.

Когда вы добавляете плагин cordova plugin add org.apache.cordova.device, он загружается в ваше приложение, и, следовательно, информация, которую вы хотите, находится в window.device.

Если вы хотите получить устройство uuid в любом месте кода, вам просто нужно позвонить window.device.uuid.

Если вы хотите, как только приложение запустится, используйте:

ionic.Platform.ready(function(){
  console.log( window.device.uuid );
});

Ответ 3

Если вы используете "ионную подачу", устройство будет "не определено". Попробуйте в эмуляторе или физическом устройстве.

Ответ 6

Вы можете просто использовать ionic.Platform.device() в своей функции platform.ready.

$ionicPlatform.ready(function {
  console.log(ionic.Platform.device());// returns an object containing device uuid,version, platform, manufacturer ...
});

надеюсь, что это поможет кому-то:).

С наилучшими пожеланиями.

Ответ 7

http://forum.ionicframework.com/t/ionic-cordova-device-uuid/13652

Вы можете использовать только плагины cordova в функции обратного вызова ionic.Platform.ready():

angular.module('starter.controllers', [])

.controller('DashCtrl', function ($scope, $state, $cordovaDevice) {

var init = function () {
  console.log("initializing device");
  try {

    $scope.uuid = $cordovaDevice.getUUID();

  }
  catch (err) {
    console.log("Error " + err.message);
    alert("error " + err.$$failure.message);
  }

};

ionic.Platform.ready(function(){
  init();
});

})

Это связано с тем, что плагины Cordova занимают больше времени для загрузки веб-приложения. Обратный вызов ionic.Platform.ready() запускается, как только Кордова полностью загрузится или сразу же, если она уже загружена.

Ответ 8

В течение многих часов мы боролись с этим, установите плагин устройства cordova с помощью:

cordova plugin add cordova-plugin-device

убедитесь, что вы также ссылаетесь на плагин в файле config.xml:

<plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" />

Ответ 9

Установка:

@ionic-native/core @ionic-native/device

введите описание ссылки здесь

ionic cordova plugin add cordova-plugin-device
npm install --save @ionic-native/device

Добавьте этот плагин в свой модуль приложения

 // app.module.ts
import { Device } from '@ionic-native/device';

...

@NgModule({
  ...

  providers: [
    ...
    Device
    ...
  ]
  ...
})
export class AppModule { }

использование

import { Device } from '@ionic-native/device';

constructor(private device: Device) { }

...

console.log('Device Model is: ' + this.device.model+
  '\n Device UUID is: ' + this.device.uuid+
  '\n Device serial is: ' + this.device.serial+
  '\n Device platform is: ' + this.device.platform+
  '\n Device version is: ' + this.device.version+
  '\n Device manufacturer is: ' + this.device.manufacturer);

Если не запустится, измените "import { Device } from '@ionic-native/device';" для "import { Device } from '@ionic-native/device/ngx';"

И "this.device.uuid" для

"this.device.getModel().then(data => {
        console.log(data)
      });"

Используйте эти команды для запуска в браузере

    ionic build

    ionic cordova platform add browser

    cordova run browser

И работает!

в браузере

enter image description here

в реальном устройстве

enter image description here