web-dev-qa-db-ja.com

ionicフレームワークでデバイス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を読み取る別の方法がある場合、その方向を示してくれます。

14
sarsarahman

うわー、私は何が間違っているのかを知りました...この質問を通して。 http://forum.ionicframework.com/t/problem-to-use-ngcordova-device-is-not-defined/11979

コルドバがサポートしている以外のプラットフォームを備えた他のデバイスでテストすると、これが発生します。これは私にとって有用な発見でした。

0
sarsarahman

はい、別の方法があります。 ngCordovaは必要ありませんこれには。

プラグインを追加するとcordova plugin add org.Apache.cordova.deviceアプリケーションにロードされるため、必要な情報はwindow.device

コード内の任意の場所でデバイスのUUIDを取得する場合は、window.device.uuid

アプリの起動直後に必要な場合は、次を使用します。

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

「> ionic serve」を使用している場合、デバイスは「定義されていません。」エミュレータまたは物理デバイスで試してください。

10
David J Barnes

ngCordovaおよびcordova Deviceプラグイン を使用します。

cordovaプラグインはorg.Apache.cordova.deviceを追加します

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

V2内では次のように機能します。

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

リファレンス: http://ionicframework.com/docs/v2/native/device/

6
fraank

_platform.ready_関数でionic.Platform.device()を使用できます。

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

これが誰かを助けることを願っています:)。

よろしく。

3
Herman Demsong

インストール:

@ 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"は「調査」

これらのコマンドを使用してブラウザーで実行する

    ionic build

    ionic cordova platform add browser

    cordova run browser

そして動作します!これらのバージョンで

enter image description here

ブラウザで

enter image description here

実デバイスで

enter image description here

今日、これに何時間も苦労してきました。次を使用してCordovaデバイスプラグインをインストールしてください。

cordova plugin add cordova-plugin-device

config.xmlでプラグインも参照していることを確認してください。

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

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

Ionic.Platform.ready()コールバック関数内でのみcordovaプラグインにアクセスできます。

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プラグインがWebアプリケーションよりもロードに時間がかかるためです。 ionic.Platform.ready()コールバックは、Cordovaが完全にロードされるとすぐに、または既にロードされている場合はすぐにトリガーされます。

1
rahuldm