Приложение Cordova Wrapper, где внутренние ссылки загружаются в приложение, внешние ссылки загружаются в браузере

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

Я хотел бы, чтобы все внутренние ссылки из этого домена загружались внутри приложения , но все внешние ссылки ( http://twitter.com и т. Д.) Загружались в системный браузер , поэтому на страницах были функции Back / Forward.

В обычном приложении с представлениями я мог бы установить target='_system' для загрузки ссылок в браузере по умолчанию или использовать кордонов-plug-inappbrowser для явного открытия ссылок в представлении веб-браузера. К сожалению, в этом случае у меня нет возможности редактировать код на стороне сервера, поэтому вам нужно решение, которое работает в приложении.

Если я определяю config.xml как таковой, то как внутренние, так и внешние ссылки загружаются в приложение.

 <content src="http://example.com/" /> <access origin="*" /> <allow-navigation href="*" /> 

Если я определяю config.xml с allow-intent , то внутренние и внешние ссылки открываются в системном браузере.

 <content src="http://example.com/" /> <access origin="*" /> <allow-navigation href="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 

Другие предложили использовать пользовательский javascript для переопределения target в _system , однако, поскольку у меня нет собственных представлений, я не могу этого сделать.

Можно ли определить allow-intent для кордова-плагина-белого списка таким образом, чтобы включить все URL-адреса, которые не являются внутренним доменом ?

Или мне нужно как-то переопределить shouldStartLoadWithRequest в MainViewController а затем вызвать [[UIApplication sharedApplication] openURL:url] ?

Solutions Collecting From Web of "Приложение Cordova Wrapper, где внутренние ссылки загружаются в приложение, внешние ссылки загружаются в браузере"

Хорошо, после некоторых экспериментов и предложений от Hayyaan , я смог придумать сочетание allow-navigation и allow-intent которые служили моей цели.

 <content src="https://example.com/" /> <access origin="*" /> <allow-navigation href="about:*" /> <allow-navigation href="https://example.com/*" /> <allow-navigation href="https://*.example.com/*" /> <allow-navigation href="https://*.facebook.com/*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 

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

Заметьте, я включил <allow-navigation href="https://*.facebook.com/*" /> чтобы разрешить загрузку библиотек Facebook, иначе я получил сообщение об ошибке.

 ERROR Internal navigation rejected - <allow-navigation> not set for url='https://staticxx.facebook.com/connect/xd_arbiter.php? 

А также включить <allow-navigation href="about:*" /> чтобы избежать ошибки about:blank .

 ERROR Internal navigation rejected - <allow-navigation> not set for url='about:blank' 

Надеюсь, это поможет кому-то еще с той же проблемой 🙂