Intereting Posts
Остаток логотипа панели действий оставлен SQLiteDatabase 'не реализует интерфейс' Строка состояния появляется, когда появляется мягкая клавиатура, но не скрывается, когда исчезает мягкая клавиатура в режиме погружения Образцы / учебники для платформы DRM в Android Как заполнить пароль EditText с Android uiautomator? Какой документ является Play Store, ожидающий загрузки, чтобы показать, что я не выдаю себя за других? Как определить координаты долготы и широты, чтобы создать радиус в 1 милю вокруг местоположения пользователя? Как увеличить время на 1 час Google GCM android crashes (java.lang.NoClassDefFoundError: com.google.android.gms.R $ string) В любом случае, получить время от времени? Когда используется Snackbar isQueued ()? (Как поставить в очередь закусочную) Как изменить диалоги «Dividers» диалогового окна Android DatePicker Как внедрить конфигурацию Android в каждый подпроект с помощью Gradle? Аутентификация веб-сайта Mobile App с помощью Rails Нечетная ошибка Android: **** ERROR неизвестен тип 0x73736572 (glSizeof, 72)

Приложение 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' 

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