У меня есть приложение Ionic Cordova для Android, в котором есть кнопка для мессенджера facebook:
<a href = "https://m.me/my-fb-page" target = "_blank"><img src = "assets/images/messenger.svg" /></a>
При нажатии ничего не появляется на экране. Я продолжаю получать эту ошибку через logcat:
CordovaWebViewImpl: Blocked (possibly sub-frame) navigation to non-allowed URL: intent://user/xxxxxxxxxxxxx/?intent_trigger=mme&nav=discover#Intent;scheme=fb-messenger;package=com.facebook.orca;end
У меня установлен кордова-плагин-белый список.
Содержимое config.xml:
...
<content src = "index.html" />
<access origin = "*" />
<allow-intent href = "http://*/*" />
<allow-intent href = "https://*/*" />
<allow-navigation href = "*" />
<allow-intent href = "tel:*" />
<allow-intent href = "sms:*" />
<allow-intent href = "mailto:*" />
<allow-intent href = "geo:*" />
<allow-intent href = "fb-messenger:*" />
<platform name = "android">
<allow-intent href = "market:*" />
<allow-intent href = "fb-messenger:*" />
...
Я пробовал несколько вариантов разрешения, доступа и навигации.
Проблема не связана конкретно с мессенджером facebook, у меня также проблемы с открытием других внешних (платежных) приложений.
Это ссылка на Facebook Messenger, она должна открываться в приложении FB Messenger, если оно установлено, или в браузере, если оно не установлено. У меня есть еще одно приложение, которое не открывается, и его нужно открыть через фрейм, отображаемый поставщиком платежных услуг, которого мы используем: play.google.com/store/apps/… Я не могу протестировать конкретно это приложение, потому что оно открывается по ссылке поставщика платежных услуг. Поскольку <allow-intent href = "*" /> не работает ни для одного из них, я предполагаю, что проблема связана с конфигурацией плагина.
Пытаясь воспроизвести это, поэтому создал приложение только с <a href = "https://m.me/my-fb-page" target = "_blank">Facebook Messenger</a>
и установил Facebook Messenger. Android спрашивает меня, хочу ли я открыть ссылку в Chrome или Messenger, если я выберу Messenger, приложение откроется, как и ожидалось. Что мне не хватает? Может быть, вы можете разместить минимальное приложение для воспроизведения на GitHub?
С помощью <allow-navigation href = "*" />
вы говорите своему приложению переходить по каждому URL-адресу, что предотвращает работу любого allow-intent
, поскольку оно будет пытаться перейти к нему вместо запуска намерения.
Зависит ли ссылка
https://m.me/my-fb-page
(и полученное сообщение об ошибке) от того, какие приложения установлены для пользователя? С какими другими приложениями это можно протестировать?