Приложение Cordova ios - невозможно открыть ссылки из-за блокировки всплывающих окон - PullRequest
0 голосов
/ 13 октября 2019

У меня есть приложение Cordova, которое загружает приложение Angularjs (скажем, ' MyAngularApp ') с сервера на основе некоторой логики сопоставления версий. Это приложение ' MyAngular ' находится в заархивированной папке, которую мое приложение cordova распаковывает и сохраняет в постоянном месте на мобильном устройстве.

После успешной загрузки MyAngularApp 'и разархивировав, я запускаю ' MyAngularApp / index.html ' из постоянного местоположения на устройстве, используя файл: //path_to_angularjs_application_in_device/MyAngularApp/index.html

Теперь,Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь нажимает на ссылку в « MyAngularApp » на iOS, блокировщик всплывающих окон блокирует открытие страниц. Код, который написан внутри ' MyAngularApp ' для открытия страницы:

        function openUrlInNewTab(url, params, isExternal) {
                    if (params) {
                        url += '#' + params;
                    }
                    var windowName = url.startsWith('mailto') ? '_self' : '_blank';
                    $window.open(url, windowName);
        }

Я знаю, если мы сможем внести изменения выше, чтобы изменить код и заменить _blank на _system, он долженработать теоретически, но проблема в том, что я не могу внести изменения в коде MyAngularApp .

Я пытался отключить настройку popupblocker из настроек safari, но это не помогло. Здесь нужно учесть, что я не могу внести изменения в коде MyAngularApp . Я могу изменить только свое собственное приложение Cordova, которое загружает это MyAngularApp .

Эта проблема возникает только в iOS. Это прекрасно работает на Android. Проверено на iOS версии 12+. Cordova версия 7.0.0

Что я пробовал?

  1. Перейти к Settings Safari Block Pop-ups Disable (Не работает. Новое окно все еще не открывается)
  2. Установите плагин cordova InAppBrowser и назначьте window.open = cordova.InAppBrowser.open (Не работает, потому чтопроблема здесь в том, что этот фрагмент, если код будет применим до тех пор, пока не загрузится мое приложение Cordova. Как только ' MyAngularApp ' загружается, контекст меняется, и этот фрагмент кода больше не находится в контексте).

Есть идеи?

...