【问题标题】:How to get the device UUID in ionic framework如何在离子框架中获取设备 UUID
【发布时间】: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,请告诉我它的方向。

【问题讨论】:

    标签: android angularjs cordova ionic-framework ionic


    【解决方案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() 回调函数中访问 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 完全加载后立即触发,如果已经加载则立即触发。

        【讨论】:

          【解决方案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 中引用了该插件:

            &lt;plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" /&gt;

            【讨论】:

              【解决方案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
                  

                  并且有效!在这些版本中

                  在浏览器中

                  在真实设备中

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-02-03
                    • 1970-01-01
                    • 2022-10-07
                    • 2016-02-28
                    • 2014-05-01
                    • 2015-07-30
                    相关资源
                    最近更新 更多