Cordova Android не позволяет открывать намерение из белого списка для fb-messenger

У меня есть приложение 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, у меня также проблемы с открытием других внешних (платежных) приложений.

Зависит ли ссылка https://m.me/my-fb-page (и полученное сообщение об ошибке) от того, какие приложения установлены для пользователя? С какими другими приложениями это можно протестировать?

janpio 28.05.2019 14:19

Это ссылка на Facebook Messenger, она должна открываться в приложении FB Messenger, если оно установлено, или в браузере, если оно не установлено. У меня есть еще одно приложение, которое не открывается, и его нужно открыть через фрейм, отображаемый поставщиком платежных услуг, которого мы используем: play.google.com/store/apps/… Я не могу протестировать конкретно это приложение, потому что оно открывается по ссылке поставщика платежных услуг. Поскольку <allow-intent href = "*" /> не работает ни для одного из них, я предполагаю, что проблема связана с конфигурацией плагина.

JochenDB 28.05.2019 14:24

Пытаясь воспроизвести это, поэтому создал приложение только с <a href = "https://m.me/my-fb-page" target = "_blank">Facebook Messenger</a> и установил Facebook Messenger. Android спрашивает меня, хочу ли я открыть ссылку в Chrome или Messenger, если я выберу Messenger, приложение откроется, как и ожидалось. Что мне не хватает? Может быть, вы можете разместить минимальное приложение для воспроизведения на GitHub?

janpio 28.05.2019 14:51
8
3
1 626
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

С помощью <allow-navigation href = "*" /> вы говорите своему приложению переходить по каждому URL-адресу, что предотвращает работу любого allow-intent, поскольку оно будет пытаться перейти к нему вместо запуска намерения.

Другие вопросы по теме