Подтвердить что ты не робот

Console.log не работает в приложении iOS PhoneGap 3.0

Я обновляю приложение с PhoneGap 1.9 до PhoneGap 3.0. Функция console.log() больше не работает. Ранее выход был записан в консоли XCode. Каков наилучший способ восстановления функции ведения журнала?

Я читал: PhoneGap 2.0 не показывает console.log в XCode, но в PhoneGap 3.0 console.log не работает даже после события deviceReady.

Мне также интересно видеть ошибки javascript непосредственно в xcode.

4b9b3361

Ответ 1

Вам нужен плагин отладочной консоли, добавленный в ваш проект:

phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git

В более поздних версиях phonegap/cordova добавьте плагин отладочной консоли в свой проект:

cordova plugin add org.apache.cordova.console

Ответ 2

Оказалось, по крайней мере, в моем случае, что функция deviceready для регистратора не вызывалась. Окончательная строка в logger.js.

document.addEventListener("deviceready", logger.__onDeviceReady, false);

Решением (или действительно обходным) является вызов функции logger.__onDeviceReady из вашей функции прослушивания deviceready:

function onDeviceReady() {
    if (window.cordova.logger) {
        window.cordova.logger.__onDeviceReady();
    }
}

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

Ответ 3

Я нашел JSconsole.com чрезвычайно, полезный для удаленного захвата журналов консоли с мобильных устройств.

Вот как вы его установили:

  • В приложениях index.html включите (измените идентификатор):

      <script src="http://jsconsole.com/remote.js?<MAKE UP SOME UNIQUE ID>"></script>
    
  • На вашем компьютере перейдите на страницу jsconsole.com и введите :listen <YOUR UNIQUE ID>

Откройте приложение на своем мобильном устройстве, вы увидите консольные журналы на вашем компьютере.

Ответ 4

Добавить консольный плагин, как в ответе Сэма, и обеспечить включение cordova.js на каждую страницу, иначе плагин не будет работать.

При использовании плагинов phonegap я добавлял phonegap.js в тег script, тогда я заметил, что плагины (любые) работают только на странице index.html. Когда я изменил phonegap.js на cordova.js, плагины (уведомление, камера и т.д.) Начали работать над остальными страницами. Если это кому-то поможет.

Ответ 5

Если вы установили консольный консоль Cordova, то при запуске приложения:

phonegap run iOS

вы найдете журналы:

[your project dir]/platforms/ios/cordova/console.log

для IOS. Все журналы консоли отображаются, как ожидалось.

Ответ 6

Проблема

При добавлении плагина консоли на платформу ios (или после переустановки) через интерфейс командной строки появляется следующее или подобное сообщение:

"Класс CDVPlugin CDVLogger (pluginName: Console) не существует.

Решение

Откройте проект Xcode и перейдите на вкладку "Сборка фаз". Теперь откройте раскрывающийся список "Источники компиляции". Нажмите на знак "+" в конце списка и добавьте "CDVLogger.m" или любой другой недостающий источник.

Ответ 7

Помимо добавления плагина Console у меня есть другое предположение, почему это может не сработать:

console.log в Phonegap называется асинхронно, поэтому, если будущий вызов завершается с ошибкой, вся функция завершается с ошибкой и все входящие в журнал вызовы проглатываются.

  receivedEvent = function( id ) {
    alert( 'This message is displayed because alert is called synchronously ')
    console.log( 'This will not be displayed in Phonegap only in browser' )
    callingAFunctionWhichDoesNotExist()
    console.log( 'This will neither be displayed in Phonegap nor in browser' )
  }

Ответ 8

Я нашел GapDebug действительно полезным. В отличие от всего остального [cough cough weinre], он позволяет вам управлять журналом из вашего локального приложения.