Устройство Cordova уже не стреляет в iOS до взаимодействия с iOS

У меня была действительно странная ошибка, когда событие deviceready не срабатывало на устройстве iOS, пока пользователь не взаимодействовал с самой ОС, то есть, нажав кнопку на передней панели, показывало центр уведомлений с помощью перетаскивания или переходил к настройкам устройства при перетаскивании вверх.

Как только пользователь начал перетаскивать центр уведомлений iOS, устройство уже запущено.

Что-то такое простое, как это, просто не сработает:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data:* gap:* tel:* 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" />

  <title></title>

  <!-- cordova script (this will be a 404 during development) -->
  <script src="cordova.js"></script>
</head>

<body>
  <div id="log"></div>

  <script type="text/javascript">
    var log = document.getElementById("log");
    if(window.cordova){
        log.innerHTML = "with cordova";
        document.addEventListener("deviceready", function onDeviceReady(){
            log.innerHTML = "deviceready";
        }, false);
    }else{
        log.innerHTML = "with browser";
    }
  </script>
</body>
</html>

2 ответа

Решение

Проблема была действительно тонкой. Я потратил около 4 часов на отладку iOS, почему Cordova не запускалась, пока не увидел, что мне не хватает двух //, Прямо здесь:

  <meta http-equiv="Content-Security-Policy" content="default-src 'self' data:* gap://* tel:* 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" />

этот маленький gapв Content-Security-Policy должно было быть два //впереди, чтобы это работало. Это решило мою ошибку, я до сих пор не понимаю, почему.

Надеюсь это поможет!

У меня была такая же проблема на iOS. Наконец, любой из этих двух обходных путей сработал

  1. добавлять <meta http-equiv="Content-Security-Policy".......> индексировать.

  2. Понизьте платформу до 4.0.0 (обновление платформы Cordova iOS@4.0.0)

Выполнение первого варианта является предпочтительным, поскольку понижение до 4.0.0, вероятно, не является предпочтительным для вас.

Другие вопросы по тегам