Клиент попросил разместить на сайте 3 иконки: вконтакте, facebook, twitter. Каждая иконка ведет на его страничку в социалках. Также он попросил открывать соответствующее приложение, если оно установлено у пользователя.
Я использовал
этот сервис для генерации deeplinks,
deep-link.js для обработки ссылок на странице (работает на основе задержки - если не открылся native app, открывает fallback url). У меня получилось вот что ($id - это username / id):
- twitter twitter://user?screen_name=$id
IOS Safari (app installed): открывается приложение
IOS Safari (app not installed): ругается, что адрес недействителен, открывается fallback url
IOS Chrome (app installed): открывается приложение
IOS Chrome (app not installed): открывается fallback url
Android Default (app installed): открывается приложение
Android Default (app not installed): страница twitter://... недоступна
- facebook ios: fb://profile/$id, android: fb://page/$id
IOS Safari (app installed): открывается приложение
IOS Safari (app not installed): ругается, что адрес недействителен, открывается fallback url
IOS Chrome (app installed): открывается приложение
IOS Chrome (app not installed): открывается fallback url
Android Default (app installed): открывается приложение
Android Default (app not installed): страница fb:// недоступна
Android Chrome (app installed): открывается приложение
Android Chrome (app not installed): открывается fallback url
- vk ios: vk://vk.com/$id, android: https://vk.com/$id
IOS Safari (app installed): открывается приложение
IOS Safari (app not installed): ругается, что адрес недействителен, открывается fallback url
IOS Chrome (app installed): открывается приложение
IOS Chrome (app not installed): открывается fallback url
Android Default/Chrome (app installed): предлагается выбор, как открыть ссылку: приложение или браузер
Android Default/Chrome (app not installed): открывается fallback url
Как можно обойти поведение стандартного браузера Android и Safari, чтобы он не плевался ошибками?
P.S. Также пробовал указывать
App Links, не помогло:
<meta property="al:ios:url" content="fb://page/$id" />
<meta property="al:ios:app_store_id" content="284882215" />
<meta property="al:ios:app_name" content="Facebook" />
<meta property="al:android:url" content="fb://page/$id">
<meta property="al:android:package" content="com.facebook.katana">
<meta property="al:android:app_name" content="Facebook">
<meta property="al:web:url" content="https://www.facebook.com/page/$id" />
<meta property="og:title" content="example page title" />
<meta property="og:type" content="website" />
Пробовал использовать
iframe для iOS, чтобы убрать назойливые сообщения Safari о неподдерживаемых протоколах неустановленных приложений.. но не помогло.
Насколько я понял,
intent-filter может быть использован только в нативных приложениях, а не в веб-страницах, поэтому он тут тоже не подходит.
В итоге, если учесть что на ios почти все пользователи используют Safari (ибо для всех конкурентов яблоки отключают аппаратное ускорение), а на android - дефолтное непонятно что (в нечастых случаях хром), то этот deep linking ни у кого работать не будет.
Может быть кто-нибудь сможет показать какой-либо сайт, где deep linking действительно нормально работает? Ну посмотреть хоть что к чему....