Ionic InAppBrowser на iOS Загрузка белого пустого экрана Ошибка

Я уже некоторое время работаю с InAppBrowser и раньше не сталкивался с этой проблемой. Он загружал мой URL-адрес и теперь, похоже, не хочет этого делать.

Сначала я правильно импортировал InAppBroswer, на Android он работает на 100%. Это проблема только для iOS.

в моем config.xml:

<access origin="https://www.mydomain.or/*" />
<allow-intent href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<!-- Call to Plugins -->
<plugin name="cordova-plugin-whitelist" spec="1.3.3" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-keyboard" spec="2.0.5" />
<plugin name="cordova-plugin-inappbrowser" spec="^3.0.0" />
<plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
<plugin name="cordova-plugin-app-update" spec="^1.6.0" />
<plugin name="cordova-plugin-app-version" spec="^0.1.9" />
<engine name="android" spec="~7.0.0" />
<engine name="ios" spec="~4.5.4" />

Мои плагины, кажется, работают нормально, без ошибок или ошибок компиляции.

Я вызываю браузер в соответствии с их документацией:

//construct the instance of browser we are using to launch with Ionic Native
const browser = this.iab.create('https://www.mydomain.or', '_blank','location=no');
//If Browser is Hidden Display
browser.show();

В консоли для WKWebView вообще не сообщается об ошибках, но я получаю это изображение ниже как на симуляторе, так и на устройстве. Ошибка iOS

Шаги, предпринятые для решения этой проблемы: Действия по обеспечению безопасности с iOS, белый список добавлен в плагины — см. выше список плагинов. Я добавил проверки в файл plist:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>localhost</key>
    <dict>
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
    <key>www.mydomain.or</key>
    <dict/>
  </dict>
</dict>

Это, как известно, помогало с подобными проблемами в прошлом. Я также добавил метатег в свой индекс, так как в прошлом это тоже помогало другим:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src 'self’; connect-src https://www.mydomain.or; script-src 'self’; media-src *">

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

Заранее спасибо!


person Keeano    schedule 05.06.2018    source источник


Ответы (2)


Я боролся с этой проблемой до недавнего времени.

В config.xml

    <allow-navigation href="*" />

Этот тег, кажется, решает эту проблему.

--- обновить --

info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>
person Hyuck Kang    schedule 05.06.2018
comment
Это, похоже, не решило проблему для меня, я все еще получаю тот же результат. Какие методы вы использовали для устранения этой проблемы? надеюсь, предоставленной мной информации было достаточно подробно, чтобы помочь получить представление о шагах, которые я сделал до сих пор. - person Keeano; 05.06.2018
comment
Не могли бы вы загрузить файл config.xml для разъяснения проблемы? Я также загружу свой info.plist для уточнения. Пожалуйста, проверьте мой ответ еще раз. - person Hyuck Kang; 05.06.2018
comment
У меня не было системного подхода к решению этой проблемы, потому что очевидно, что это одна из проблем с разрешениями. Так что я просто просмотрел множество документов и страниц методом проб и ошибок. - person Hyuck Kang; 05.06.2018
comment
Спасибо, я узнал проблему. info.plist теперь должен обновляться по умолчанию с помощью Ionic CLI при запуске «ionic cordova platform add ios». Также оказывается, что '‹allow-navigation href=/›' совпадает с ‹allow-intent href= /›. Проблема была связана с безопасностью, но я смог решить ее с помощью ответа, который я предоставил - person Keeano; 05.06.2018
comment
Интересно. Это может быть более безопасным решением. Однако ‹allow-navigation href= /› относится к «навигации в веб-просмотре», тогда как ‹allow-intent href= /› относится к «системе для открытия». stackoverflow.com/a/35374403/6627660 - person Hyuck Kang; 05.06.2018
comment
Я этого не знал, спасибо. Я также добавлю это. - person Keeano; 05.06.2018

РЕШЕНО Я смог решить эту проблему, добавив:

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

Это добавляется в заголовок вашего файла index.html. В моем вопросе выше явно есть некоторые синтаксические ошибки, но он не вызовет ошибку при сборке для Android или iOS.

Однако вы можете добавить инструмент Build, чтобы написать сценарий для проверки этого тега в вашем index.html.

person Keeano    schedule 05.06.2018