2014-09-12 4 views
3

В приложении Кордовы любые вызовы консоли. {Log, warn, error и т. Д.} Перед подключением инструментов разработчика Safari не отображаются в консоли. Это делает невозможным отладку ошибок при запуске. Как получить эти сообщения?Получить журналы консоли запуска в iOS WebView

Бонусный вопрос: как заставить WebView останавливаться на отладчике; линии перед подключением к Safari?

ответ

1

Я помню, как друг рассказывал мне о способе работы веб-инспектора сафари, независимо от того, находится ли приложение на переднем плане или нет. I found his article и вот детали -

Первое, что нужно сделать, это установить глобальную горячую клавишу - шаги:

  • Open System Preferences/Keyboard
  • На правой панели выберите Application Shortcuts
  • Добавить горячую клавишу - используйте любые клавиши, которые вы хотите (я использовал CMD + ALT + I)
  • Имейте соответствующий ключ index.html или как бы то ни было ваше кордова m айн HTML файл

шаги, чтобы держать открытым SWI

  • Launch Кордова App
  • Открыть SWI
  • Закрыть SWI
  • Запуск SWI с кнопкой быстрого, как указано в глобальной hotkey Application Shortcuts
  • Закрыть Приложение
  • Повторно открыть приложение - уведомление о том, что SWI все еще работает и продолжает давать нам возможность ведения журнала/отладки!

Помимо описанной выше техники вы установили этот плагин ниже и проверили журналы в Xcode?

cordova plugin add org.apache.cordova.console

использовать Ripple Emulator ли? Here is a great post on setting it up.

+0

Я не могу заставить трюк приложения ярлыка работать. Когда я закрываю приложение, окно SWI закрывается. Я попытался закрыть, перейдя на главный экран, закрывшись через коммутатор приложений, закрыв симулятор - любой из них, как только рамка index.html покинет область действия, окна SWI закрываются. –

+0

После установки 'org.apache.cordova.console', я не вижу изменений в выходе Xcode. –

+0

Действительно ли «пульсация» iOS? Я вижу только документы для эмуляции устройств Android. –

0

Я мог бы, конечно, переопределить или обернуть console.log, чтобы вывести сообщения журнала в массив, window._log.

(function(){ 
    var _console = window.console; 
    window.console = {}; 
    window.$log = {}; 
    ['log', 'warn', 'error', 'debug'].forEach(function(level){ 
     window._log[level] = []; 
     window.console[level] = function(){ 
      var args = Array.prototype.slice.apply(arguments); 
      window._log[level].push(arguments); 
      _console[level].apply(_console, arguments); 
     } 
    }); 
}()); 
1

Есть хороший новый инструмент, довольно простой, который решает вашу проблему. Посмотрите на GapDebughere, это очень много нового, но отлично работает для меня!

Он делает именно то, чего вы пытаетесь достичь с помощью Safari Remote Inspector, в частности, он не закрывает сеансы при выходе из приложения и, следовательно, ловит весь вывод консоли.

Также очень интересно в сочетании с Android, потому что вы получаете один инструмент для отладки обеих платформ соответственно.

+1

GapDebug больше не работает с iOS 10, и нет планов продолжать разработку. – James

0

я сдался и сделал следующее:

// At beggining 
window.logs = []; 

// Just push the logs 
window.logs.push(err) 
window.logs.push(string) 

Затем вы можете просмотреть журналы на экране журнала консоли разработчика, введя, журналы.

0

Этот простой трюк может быть полезным, просто откройте консоль в Safari и запустите:

window.location.reload() 
0

Вы только должны нажать на круглую стрелку здесь и перезапустить веб-приложение!

Web Inspector