15

installed cordova device plugin by :

sudo cordova plugin add org.apache.cordova.device

then downloaded ngCordova and included ng-cordova.min.js in to js folder and also included in index.html

next what i did is injected ngCordova as follows

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

then included in controller as follows

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)

Can you now tell me what went wrong?

If is there another way to read the Device UUID show me the direction to it.

4

9 回答 9

13

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

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

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

如果您想在应用程序启动后立即使用,请使用:

ionic.Platform.ready(function(){
  console.log( window.device.uuid );
});
于 2015-12-07T21:10:10.940 回答
10

如果您使用“> ionic serve”,则设备将“未定义”。在模拟器或物理设备中尝试。

于 2015-02-19T15:40:50.083 回答
8

使用ngCordova 和 cordova 设备插件

科尔多瓦插件添加 org.apache.cordova.device

module.controller('MyCtrl', function($scope, $cordovaDevice) {
  var uuid = $cordovaDevice.getUUID();
});
于 2014-12-14T08:44:18.387 回答
6

在 v2 中,它的工作方式如下:

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

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

于 2016-10-24T17:18:18.587 回答
3

安装:

@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

并且有效!在这些版本中

在此处输入图像描述

在浏览器中

在此处输入图像描述

在真实设备中

在此处输入图像描述

于 2019-01-28T20:14:57.460 回答
3

你可以ionic.Platform.device()在你的platform.ready函数中使用。

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

希望这可以帮助某人:)。

问候。

于 2016-09-15T08:23:56.163 回答
1

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

您只能在 ionic.Platform.ready() 回调函数中访问 c​​ordova 插件:

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 完全加载后立即触发,如果已经加载则立即触发。

于 2015-06-27T06:46:50.933 回答
1

今天已经为此苦苦挣扎了几个小时,请使用以下命令安装cordova设备插件:

cordova plugin add cordova-plugin-device

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

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

于 2016-05-07T02:44:46.373 回答
0

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

当我们在具有除科尔多瓦以外的其他平台的其他设备上进行测试时,会发生这种情况。这对我来说是一个有用的发现。

于 2014-12-14T09:57:46.627 回答