安装了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,请告诉我方向。
答案 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);
答案 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
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
工作!在这些版本中
在浏览器中
在真实设备中
答案 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)
当我们测试其他具有除cordova支持的平台的设备时,会发生这种情况。 这对我来说是一个有用的发现。