如何在离子框架中获取设备 UUID
Posted
技术标签:
【中文标题】如何在离子框架中获取设备 UUID【英文标题】:How to get the device UUID in ionic framework 【发布时间】:2015-02-12 12:45:54 【问题描述】:通过以下方式安装了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,请告诉我它的方向。
【问题讨论】:
【参考方案1】:使用ngCordova and cordova Device plugin:
cordova 插件添加 org.apache.cordova.device
module.controller('MyCtrl', function($scope, $cordovaDevice)
var uuid = $cordovaDevice.getUUID();
);
【讨论】:
【参考方案2】:哇通过这个问题发现了我做错了什么。 http://forum.ionicframework.com/t/problem-to-use-ngcordova-device-is-not-defined/11979
当我们在具有除cordova 支持之外的其他平台的其他设备上进行测试时,会发生这种情况。 这对我来说是一个有用的发现。
【讨论】:
【参考方案3】:如果您使用“> ionic serve”,则设备将“未定义”。在模拟器或物理设备中尝试。
【讨论】:
好点 - 因为这对很多人(包括我自己)来说可能不是很明显【参考方案4】: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 完全加载后立即触发,如果已经加载则立即触发。
【讨论】:
【参考方案5】:是的,还有另一种方法。 您只是不需要 ngCordova。
当您添加插件cordova plugin add org.apache.cordova.device
时,它会加载到您的应用程序中,因此您想要的信息位于window.device
。
如果您想在代码中的任何位置获取设备 uuid,您只需调用 window.device.uuid
。
如果您想在应用启动后立即使用,请使用:
ionic.Platform.ready(function()
console.log( window.device.uuid );
);
【讨论】:
【参考方案6】:今天已经为此苦苦挣扎了几个小时,请使用以下命令安装 cordova 设备插件:
cordova plugin add cordova-plugin-device
确保您还在 config.xml 中引用了该插件:
<plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" />
【讨论】:
【参考方案7】:您可以在 platform.ready
函数中使用 ionic.Platform.device()
。
$ionicPlatform.ready(function
console.log(ionic.Platform.device());// returns an object containing device uuid,version, platform, manufacturer ...
);
希望这对某人有所帮助:)。 问候。
【讨论】:
【参考方案8】:在 v2 中,它的工作方式如下:
import Device from 'ionic-native';
console.log('Device UUID is: ' + Device.uuid);
参考:http://ionicframework.com/docs/v2/native/device/
【讨论】:
【参考方案9】:安装:
@ionic-native/核心 @ionic-native/设备
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
并且有效!在这些版本中
在浏览器中
在真实设备中
【讨论】:
以上是关于如何在离子框架中获取设备 UUID的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 7 中使用 iBeacons 获取设备详细信息,如 UUID 或设备名称