Cordova iOS deviceready никогда не срабатывает

#javascript #ios #cordova

#javascript #iOS #кордова

Вопрос:

Я разрабатываю приложения Cordova уже несколько лет, и часто сталкиваюсь с проблемой, когда событие «deviceready» просто не запускается в iOS.
(Это не cordova.js пропавший файл, который, похоже, является единственным ответом, который я нахожу в SO).
В настоящее время я использую Cordova версии 6.3.1, хотя у меня была такая же проблема во многих более ранних версиях.

Конечно, другие сталкиваются с этой проблемой — я попытаюсь решить ее сейчас и опубликую ответ здесь.


Пример index.html кода:

 <html>
    <body>
        <script src="cordova.js"></script>
        <script>
            document.addEventListener("deviceready", 
               function() { alert('device ready fired!'); }, false);
        </script>
    </body>
</html>
  

Комментарии:

1. Может ли ваш javascript-код блокировать инициализацию вашего приложения cordova и все такое?

Ответ №1:

Возможно, это было вызвано изменениями, внесенными iOS, из-за чего плагин push, который я использовал, перестал работать.
Я сделал много вещей, возможно, все они помогли, я перечислю их все:

Что, казалось, решило это

  1. Удалите все плагины и повторно добавьте их

cordova plugin ls (посмотрите все плагины и запишите их)
cordova plugin rm plugin-name (для каждого из них)
плагин cordova добавить имя плагина (добавьте их все обратно)

Что, возможно, также помогло

  1. Я обновился до последней версии Xcode

  2. Обновите cordova (и cordova-ios) до последней версии

установка sudo npm -g
cordova обновление платформы cordova ios @последняя версия

  1. Добавление и удаление платформы ios

платформа cordova rm ios
платформа cordova добавить ios

Комментарии:

1. Теперь я создал скрипт, который удаляет, а затем добавляет обратно все мои плагины, что значительно упрощает это исправление, когда оно требуется.