簡體   English   中英

Cordova設備就緒無法在iOS中觸發

[英]Cordova deviceready not firing in iOS

我正在使用Ionic構建我的混合應用程序。 在Android上,我的應用運行良好。 現在我正在為iOS構建它,但我的全部內容都包裹在其中

document.addEventListener('deviceready', function () {
  console.log('dashboard -> device ready');
  // copy database to the device
  DbAccess.copyDb();
}, false);

在iOS中未觸發。

然后我用iOS模擬器嘗試了

$ ionic emulate ios --livereload

並檢查console.log。

結果:

1     709252   log      deviceready has not fired after 5 seconds.
2     709253   log      Channel not fired: onCordovaInfoReady

我遵循了在這里和通過Google找到的建議,但不幸的是沒有成功(刪除ios並重新添加等)

我的版本:

Cordova: 6.1.1
Ionic: 1.7.14

我的index.html中的“我的安全性”設置:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *">

在我的config.xml中:

<access origin="geo:*" launch-external="yes"/>
<access origin="tel:*" launch-external="yes"/>
<access origin="mailto:*" launch-external="yes"/>

我真的不知道該在哪里繼續解決該錯誤。 也許這與內容安全策略有關,但我不知道如何解決。

在此先感謝您的幫助!

編輯:我現在包裝我的控制器

$ionicPlatform.ready(function() {...});

例如:

    var dashboardCtrl = function ($scope, $ionicPlatform, $cordovaDevice, DbAccess) {
      console.log('dashboardCtrl');
      $ionicPlatform.ready(function () {
        console.log('dashboard -> platform ready');
        document.addEventListener('deviceready', function () {
          console.log('dashboard -> device ready');
          // copy database to the device
          DbAccess.copyDb();
        }, false);
      });
    };
    dashboardCtrl.$inject = ['$scope', '$ionicPlatform', '$cordovaDevice', 'DbAccess'];

當我使用iOS模擬器進行測試時,它仍然會失敗並在console.log中引發“ deviceready”錯誤。

如果您使用的是Ionic,為什么要手動使用document.addEventListener('deviceready', function () $ionicPlatform.ready得到與cordova的'deviceready'相同的結果,而無需再次調用deviceready。

另一件事,您不應該將ready函數放在控制器的自定義函數中。 不應該這樣使用

$scope.logInSubmit = function (details)  {}

要么

var submit = function () {}

如果檢查Ionic樣本,您將對這兩個項目有更好的了解(例如:ionic開始myApp選項卡)

在Ionic中,您的代碼可以像這樣

$ionicPlatform.ready(function() {
  console.log('dashboard -> device ready');
  //you can load your plugins or custom objects inside this device ready
}

我趕上了

 $ionicPlatform.ready(function () {
...
})

它可以在真實的設備上運行,我從未在模擬器上進行過測試。 我不認為Content-Security-Policy是您未獲得此事件的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM