【问题标题】:Cannot get device information on Ionic/Cordova App to appear无法在 Ionic/Cordova 应用程序上显示设备信息
【发布时间】:2017-08-15 23:29:21
【问题描述】:

我有一个 Ionic 应用程序,我正在尝试在我的视图中显示设备信息,如下所示。

代码(coffeeScript):

angular.module('hgApp', ['ionic'])
 .run(($ionicPlatform, $rootScope) ->
 aboutPageFunction($rootScope)
 $ionicPlatform.ready ->
deviceInformation = ionic.Platform.device()
console.log(deviceInformation)
  if window.cordova and window.cordova.plugins.Keyboard
    cordova.plugins.Keyboard.hideKeyboardAccessoryBar true
    cordova.plugins.Keyboard.disableScroll true
  if window.StatusBar
    StatusBar.styleDefault()
  return
 return
).config [
'$stateProvider'
'$urlRouterProvider'
($stateProvider, $urlRouterProvider) ->
$stateProvider.state('app',
  url: '/app'
  abstract: true
  templateUrl: './sections/menu/menu.tpl.html'
  controller: 'roomList'
).state('app.myHouse',
  url: '/myHouse'
  views:
    'menuContent':
      templateUrl: './sections/myHouse/myHouse.tpl.html'
)
# if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise 'app/myHouse'
return
]

aboutPageFunction = ($rootScope) ->
 device = ionic.Platform.device()
 $rootScope.currentPlatform = ionic.Platform.platform()
 $rootScope.currentPlatformVersion = ionic.Platform.version()
 $rootScope.manufacturer = device.manufacturer
 return

模板视图

<ion-view view-title="About">
 <ion-content>
         <span>Manufacturer:>{{manufacturer}}</p></span>
        <span>Current platform:>{{currentPlatform}}</p></span>
        <span>Current platform version:>{{currentPlatformVersion}}</p></span>
 </ion-content>
</ion-view view-title="About">

我正在使用 Chrome 浏览器中的工具设置“Google Nexus 5”设备。

当我刷新页面时,它不显示制造商,但它显示后两个变量,如下所示:

Manufacturer:
Current platform: android
Current platform version: 6

任何想法为什么设备对象不显示制造商信息?

-- 注意-- 当我在 ready() 中使用 console.log($ionicPlatform) 时,我得到了一个有效的对象,但没有看到任何设备的东西。

【问题讨论】:

    标签: cordova ionic-framework cordova-plugins


    【解决方案1】:

    您可以使用cordova-plugin-device 获取设备的硬件和软件详细信息。

    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        console.log(device);
    }
    

    属性设备对象:

    device.cordova
    device.model
    device.platform
    device.uuid
    device.version
    device.manufacturer
    device.isVirtual
    device.serial
    

    更新

    $ionicPlatform.ready 在设备准备就绪时执行回调,因此您实际上不需要添加 devicereadyevent 监听器:

    angular.module('hgApp', ['ionic'])
     .run(($ionicPlatform, $rootScope) ->
     aboutPageFunction($rootScope)
     $ionicPlatform.ready ->
    
      if window.device
        console.log(device)
    
      if window.cordova and window.cordova.plugins.Keyboard
        cordova.plugins.Keyboard.hideKeyboardAccessoryBar true
        cordova.plugins.Keyboard.disableScroll true
      if window.StatusBar
        StatusBar.styleDefault()
      return
     return
    )
    

    【讨论】:

    • 感谢您-我正在尝试将其集成到现有应用程序中-您知道在上面的代码中设置 addEventListener 的最佳方法吗?
    • 感谢代码看起来很完美,但由于某种原因,设备变量未定义。奇怪的是我在他们自己的网站上使用相同的代码ionicframework.com/docs/api/utility/ionic.Platform
    • 你安装了插件吗?科尔多瓦插件添加科尔多瓦插件设备
    • 我已经安装了插件...使用上面的代码我添加了一个 console.log 来输出 ionic.Platform.device() 我和这个人有完全相同的问题 - 对象只是空的? forum.ionicframework.com/t/… 我会继续努力的 :)
    • 你在设备上测试它吗? Cordova 插件在浏览器中不起作用。
    【解决方案2】:

    只是为了给那些寻找这个答案的人写得更简洁:

    1.) 确保安装了cordova-plugin-device,您可以在配置文件中检查它或运行cordova plugin ls

    2.) 用户(和我)试图将设备对象引用为ionic.Platform.device(),这就是它在此链接中的显示方式:http://ionicframework.com/docs/v1/api/utility/ionic.Platform/。 但是,如果您安装了上述插件,您要查找的设备信息实际上是在 window.device 中找到的,或者如果没有本地 device 变量,则只是在 device 中找到。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 2015-06-07
      • 2017-05-08
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多