web-dev-qa-db-fra.com

Comment obtenir le UUID de l'appareil dans un cadre ionique

cordoba Device Plugin installé par:

Sudo cordova plugin add org.Apache.cordova.device

puis téléchargé ngCordova et inclus ng-cordova.min.js dans le dossier js et également inclus dans index.html

ensuite ce que j'ai fait est injecté ngCordova comme suit

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

puis inclus dans le contrôleur comme suit

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)

Pouvez-vous maintenant me dire ce qui s'est mal passé?

Si y a-t-il un autre moyen de lire l'UUID du périphérique, indiquez-lui le sens.

14
sarsarahman

wow découvert ce que je faisais mal ... à travers cette question. http://forum.ionicframework.com/t/problem-to-use-ngcordova-device-is-not-defined/11979

lorsque nous testons sur un autre appareil dont la plate-forme est autre que celle prise en charge par cordova, cela se produit . Ce fut une découverte utile pour moi.

0
sarsarahman

Oui, il y a un autre moyen. Vous n'avez simplement pas besoin du ngCordova pour cela.

Lorsque vous ajoutez le plugin cordova plugin add org.Apache.cordova.device, il est chargé dans votre application. Par conséquent, les informations souhaitées se trouvent à window.device.

Si vous voulez obtenir de l’appareil n'importe où dans le code, il vous suffit d’appeler window.device.uuid.

Si vous voulez dès que l'application démarre, utilisez:

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

Si vous utilisez '> ionic serve', l'appareil sera "non défini". Essayez dans un émulateur ou un périphérique physique.

10
David J Barnes

Utilisez ngCordova and cordova Device plugin :

cordova plugin ajoute org.Apache.cordova.device

module.controller('MyCtrl', function($scope, $cordovaDevice) {
  var uuid = $cordovaDevice.getUUID();
});
8
Ben Diamant

Dans la v2, cela fonctionne comme ceci:

import { Device } from 'ionic-native';
console.log('Device UUID is: ' + Device.uuid);

Référence: http://ionicframework.com/docs/v2/native/device/

5
frank

Vous pouvez simplement utiliser ionic.Platform.device() dans votre fonction platform.ready

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

espérons que cela aide quelqu'un :).

Cordialement.

3
Herman Demsong

Installer:

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

entrez la description du lien ici

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

Ajouter ce plugin au module de votre application

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

...

@NgModule({
  ...

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

Usage

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);

Si ne pas exécuter change "import { Device } from '@ionic-native/device';" pour "import { Device } from '@ionic-native/device/ngx';"

Et "this.device.uuid" pour "Enquêter"

Utilisez ces commandes pour exécuter dans le navigateur

    ionic build

    ionic cordova platform add browser

    cordova run browser

Et fonctionne! dans ces versions

 enter image description here

dans le navigateur

 enter image description here

dans un appareil réel

 enter image description here

2

Cela fait des heures que je lutte avec cela, installez le plugin device cordova avec:

cordova plugin add cordova-plugin-device

assurez-vous de référencer également le plug-in dans votre fichier config.xml:

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

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

Vous pouvez uniquement accéder aux plug-ins cordova dans la fonction de rappel 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();
});

})

En effet, les plugins Cordova prennent plus de temps à charger que l'application Web. Le rappel ionic.Platform.ready () est déclenché dès que Cordova est complètement chargé ou immédiatement s'il est déjà chargé.

1
rahuldm