2016-04-27 1 views
1

自分のコードが実行されているタイプのデバイス(iPhone 4sまたはiPhone 5など)を見つけようとしています。イオスのイオン取得デバイス情報が動作しない同じコードがAndroid用に機能するのに対して

ここには、私が持っているhtmlとjsコードがあります。 これはのindex.htmlです:

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title></title> 
    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 
    <script src="js/ng-cordova.min.js"></script> 
    <script src="cordova.js"></script> 
    <script src="js/app.js"></script> 
</head> 
<body ng-app="starter" ng-controller="DeviceController"> 
    <ion-pane> 
    <ion-header-bar class="bar-stable"> 
     <h1 class="title">Device Information</h1> 
    </ion-header-bar> 
    <ion-content> 
     <div class="item item-text-wrap"> 
     <ul class="list"> 
      <li class="item"> 
      Manufacturer : {{manufacturer}} 
      </li> 
      <li class="item"> 
      Model : {{model}} 
      </li> 
      <li class="item"> 
      Platform : {{platform}} 
      </li> 
      <li class="item"> 
      UUID : {{uuid}} 
      </li> 
     </ul> 
     </div> 
    </ion-content> 
</ion-pane> 
</body> 
</html> 

そして、ここでは私のapp.jsです:

angular.module('starter', ['ionic', 'ngCordova']) 

.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 
    if (window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 
    if (window.StatusBar) { 
     StatusBar.styleDefault(); 
    } 
    }); 
}) 

.controller('DeviceController', function($ionicPlatform, $scope, $cordovaDevice) { 
    $ionicPlatform.ready(function() { 
    $scope.$apply(function() { 
     var device = $cordovaDevice.getDevice(); 
     $scope.manufacturer = device.manufacturer; 
     $scope.model = device.model; 
     $scope.platform = device.platform; 
     $scope.uuid = device.uuid; 
    }); 
    }); 
}); 

コードは、Android上で正常に動作、およびデバイスタイプを含むすべての要求された情報を取得し、 Androidのバージョンなどですが、iPhoneでは情報が空であり、同じコードで情報が返ってくることはありません。

iosの変更が必要なことはありますか?

答えて

0

私はこれを行うには良いと作業方法があることだと思う:あなたはまた、ドキュメントリスナーがある$ionicPlatform.ready()を使用してのあなたの方法を使用することができ、可変var device = $cordovaDevice.getDevice();

を定義する必要はありません

.controller('DeviceController', function($ionicPlatform, $scope) { 

    document.addEventListener("deviceready", onDeviceReady, false); 

    function onDeviceReady() { 
    $scope.manufacturer = device.manufacturer; 
    $scope.model = device.model; 
    $scope.platform = device.platform; 
    $scope.uuid = device.uuid; 
    } 

}); 

私はそれを書いて見たいのですが、$ scopeは必要ないと思います。

公式ドキュメント:https://github.com/apache/cordova-plugin-device

EDIT(要求によって動作します私の個人的なコードを追加します)

私のモジュール構造は、あなたとは少し異なる場合気にしないでください。

だからこれは私のtestController.js

angular.module('testApp.testController', []) 
    .controller('testController', function($scope) { 

    'use strict'; 

    document.addEventListener('deviceready', onDeviceReady, false); 

    function onDeviceReady() { 
    console.log('device ready'); 
    $scope.manufacturer = device.manufacturer; 
    $scope.model = device.model; 
    $scope.platform = device.platform; 
    $scope.uuid = device.uuid; 
    } 

}); 

そして、ここで私のtest.htmlという

<ion-view class="testview"> 
    <ion-content class="test-list"> 
    <div>Manufacturer: {{manufacturer}}</div> 
    <div>Model: {{model}}</div> 
    <div>Platform: {{platform}}</div> 
    <div>UUID: {{uuid}}</div> 
    </ion-content> 
</ion-view> 

は、その後、私はちょうどionic build iosを実行するとXcodeで私のデバイス上でそれを実行しています。それはすべての情報をうまく表示します。また、Androidでテストされ、動作します!

+0

お返事ありがとうございます。私はそれを試して、それはAndroidのためにも動作しません。 – TJ1

+0

申し訳ありませんが、ngCordovaの部分が欠落している可能性があります。 codeova-pluginデバイスが 'cordova plugin add cordova-plugin-device'でインストールされている場合、私の例はうまくいきます。自分のやり方で試してみましたが、ionicPlatform.readyをdo​​cument.addEventListenerに変更してスコープを削除してください。 – thepio

+0

はい、私はあなたが言ったことを試しました: 'あなたのやり方でそれを試しましたが、ionicPlatform.readyをdo​​cument.addEventListenerに変更してスコープを削除してください。$ apply'を実行しましたが、再び動作しませんでした。 – TJ1

関連する問題