如何在离子框架中获取设备UUID

时间:2014-12-14 06:07:01

标签: android angularjs cordova ionic-framework ionic

安装了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,请告诉我方向。

9 个答案:

答案 0 :(得分:13)

是的,还有另一种方式。 您只需要ngCordova

当您添加插件cordova plugin add org.apache.cordova.device时,它会加载到您的应用中,因此您想要的信息位于window.device

如果您想在代码中的任何位置获取设备uuid,只需拨打window.device.uuid

如果您想在应用启动后立即使用:

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

答案 1 :(得分:10)

如果您使用'&gt;离子服务',设备将“未定义”。尝试使用模拟器或物理设备。

答案 2 :(得分:8)

使用ngCordova and cordova Device plugin

  

cordova插件添加org.apache.cordova.device

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

答案 3 :(得分:6)

在v2中,它的工作原理如下:

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

参考:http://ionicframework.com/docs/v2/native/device/

答案 4 :(得分:3)

您可以在ionic.Platform.device()功能中使用platform.ready

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

希望这有助于某人:)。

问候。

答案 5 :(得分:3)

安装:

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

enter link description here

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

答案 6 :(得分: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应用程序。在Cordova完全加载后立即触发ionic.Platform.ready()回调,如果已经加载,则立即触发。

答案 7 :(得分:1)

今天几个小时一直在努力解决这个问题,请安装cordova设备插件:

cordova plugin add cordova-plugin-device

确保您还在config.xml中引用该插件:

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

答案 8 :(得分:0)

哇,通过这个问题发现我在做什么错。 http://forum.ionicframework.com/t/problem-to-use-ngcordova-device-is-not-defined/11979

当我们测试其他具有除cordova支持的平台的设备时,会发生这种情况。 这对我来说是一个有用的发现。