【问题标题】:ngCordova getUUID() returns device is undefinedngCordova getUUID() 返回设备未定义
【发布时间】:2014-12-15 13:21:14
【问题描述】:

ngCordova getUUID() 返回设备未定义

我正在使用 Ionic 框架构建移动应用程序,我需要检索设备 UUID 我使用 ngCordova 使用这里的缩小版本 ngCordova!

这是我的主要模块

angular.module('starter', ['ionic','ngCordova'])
.controller('test',function($scope,$cordovaDevice){
$scope.uuid=$cordovaDevice.getUUID();
console.log($cordovaDevice)
})

$cordovaDevice 在使用 console.log 时被定义为对象,但在使用 $cordovaDevice.getUUID() 时,它给了我“设备未定义”的任何帮助

【问题讨论】:

    标签: javascript android angularjs ionic-framework


    【解决方案1】:

    你是否使用命令安装了cordovaDevice插件?

    cordova plugin add org.apache.cordova.device

    【讨论】:

    • 现在是cordova plugin add cordova-plugin-device
    【解决方案2】:

    您应该等到设备准备好...

    document.addEventListener("deviceready", function() {
        $scope.isOnline = $cordovaNetwork.isOnline();
        $scope.UUID = $cordovaDevice.getUUID();
    }, false);
    

    【讨论】:

      【解决方案3】:

      我通过在调用 $cordovaDevice.getUUID() 之后调用 $scope.$apply() 解决了这个问题

      $ionicPlatform.ready(function() {
      
          if(ionic.Platform.isAndroid()) {
            $scope.account.imei =  $cordovaDevice.getUUID();
            $scope.$apply();
      
          }else {//For ionic serve
              $scope.account.imei = '12345';
              console.log($scope.account.imei);
          }
      });
      

      从官方文档http://ngcordova.com/docs/common-issues/,cordova 插件返回一个承诺。

      $ionicPlatform.ready(function() {
         $cordovaPlugin.someFunction().then(success, error);
      });
      

      【讨论】:

        【解决方案4】:

        您已正确地将 ngCordova 声明为模块依赖项。我认为您需要做的就是使用完整的数组语法将$cordovaDevice 注入到您的控制器中

          .controller('test',['$scope', '$cordovaDevice', function($scope, $cordovaDevice){
            $scope.uuid=$cordovaDevice.getUUID();
          }])
        

        如果这不起作用,您是否检查过插件是否首先加载?

        【讨论】:

        • 不幸的是它不起作用,但是请,我可以检查插件是否首先加载
        • 您是在设备上还是在桌面浏览器上进行测试?您是否也经历过 ngCordova 文档中的“常见问题”? ngcordova.com/docs
        • 我在我的 android 设备上进行测试,是的,我阅读了常见问题,但它仍然无法正常工作
        • 我只能建议 1) 确保在 cordova.js 之后加载您的 ng-cordova.js 脚本 2) 确保您正在注入 $cordovaDevice,正如我上面所说的 3) 完成所有网站上的内容,例如确保 Cordova 是最新版本、刷新 android.json 等等。我已经尝试使用 Ionic CLI 在设备上执行上述操作,它构建良好并向用户提醒 UUID。在桌面浏览器中运行 Cordova 命令显然会显示“设备未定义”错误,但似乎在设备上对我有用...
        • 如果仍然无法正常工作,请尝试 Ionic 论坛,对于 Ionic 问题,它们比 Stack Overflow 更活跃。
        【解决方案5】:

        发生此错误是因为您在机器上进行开发时要求提供设备的详细信息。

        看看函数。它们都不会在您的开发环境中返回合适的值。此外,Cordova 是为移动设备构建的——他们没有为本地开发人员创建一组处理程序。

        • 返回整个设备对象。 getDevice()

        • 返回 Cordova 版本。 getCordova()

        • 返回设备型号或产品的名称。 getModel()

        • 返回设备的操作系统名称。 获取平台()

        • 返回设备的通用唯一标识符。 getUUID()

        • 返回操作系统版本。 getVersion()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-19
          • 1970-01-01
          • 2015-07-07
          • 2015-03-10
          • 1970-01-01
          • 2019-11-17
          相关资源
          最近更新 更多