Откройте приложение Android через глубокую ссылку, если он установлен или возвращается в Интернет, если он не установлен

Я пытаюсь создать веб-страницу, которая автоматически открывает приложение для Android, но только если приложение установлено. В противном случае он должен перенаправить на другую веб-страницу.

Приложение уже готово к работе и правильно обрабатывает глубокие ссылки, например example://content?id=42. Формат ссылки не может быть изменен.

Что я уже пробовал

1) Перенаправление и таймаут:

window.location.replace('example://content?id=42');
setTimeout(function() {
    window.location.replace = 'http://example.com/content?id=42';
}, 500);

Прекрасно работает для iOS, но для Android он немедленно перенаправляется на example:// и таким образом дает мне ERR_UNKNOWN_URL_SCHEME. Кажется, для Android нет выхода.

2) iframe. Невозможно в версиях Chrome версии rencent. Также не работает в браузере Samsung.

3) Intents с S.browser_fallback_url. Работает хорошо, но только в Chrome. Не работает в браузере Opera и Samsung... скорее всего, нигде, кроме Chrome 25 +.

Ответ 1

используйте http://example.com/content?id=42 в качестве ссылки и добавьте фильтр намерений в свою активность в манифесте

<intent-filter>
    <data android:scheme="http" android:host="example.com" />
    ...
</intent-filter>

Однако список зарегистрированных приложений, например. браузеров, будет отображаться, когда ссылка будет сначала доступна на машине.

Ответ 2

Вам нужно знать браузер клиента, его операционную систему и адаптировать свой сайт к ним. Например, если браузер Chrome, а ОС - Android, используйте решение Intent; если браузер Safari использует пример://schema. Вы можете получить информацию, просматривающую заголовок User-Agent запроса, но я уверен, что существует множество библиотек с открытым исходным кодом, которые могут помочь вам получить информацию, связанную с браузером и ОС.

Ответ 3

Похоже на то, что вы можете как минимум приблизиться к опыту, дав пользователю одноразовую помощь:

  • У вашей веб-страницы есть резервный URL-адрес.
  • При попадании страницы проверяйте агент пользователя, чтобы узнать, есть ли ОС Android
  • Если его Android, покажите пользователю подсказку/диалог выбора, чтобы использовать веб-интерфейс или Android
  • Если они выбирают веб (помнят выбор с помощью локального хранилища), отмените диалог и покажите резервную копию
  • Если они выбирают android (помните выбор), перенаправляйте приложение с намерением://URL (без fallback_url), выведут их на рынок, чтобы установить при необходимости

После первого взаимодействия он будет работать по вашему описанию - автоматически перейдя на веб-страницу или установленное приложение.

Ответ 4

Вы можете попробовать использовать эту схему (для отправки пользователю):

Цель:?//подробнее ID = X & URL = Y & реферер = Z # Намерение, схема = рынок, действие = android.intent.action.VIEW, пакет = com.android.vending, конец ";

X: имя пакета приложения

Y: схема глубокой ссылки, которая должна быть определена в манифесте приложения. (Пожалуйста, обратитесь this) Здесь они использовали этот URL в качестве примера: " http://www.example.com/gizmos", поэтому Y следует заменить на этот URL.

Z: Могут быть любые данные, которые вы хотите передать в приложение через Google Play. Обратите внимание, что любые данные, которые вы передаете, не должны быть "&" разделены, поскольку исходные параметры сами являются "&" разделены.

PS: Google Play делает трансляцию в приложении. Поэтому убедитесь, что вы получили широковещательную передачу в приемнике.

Ответ 5

Вам нужно установить условие веб-страницы в своих проектах android.e.x: если веб-страница в браузере xxxxxx.com откройте приложение для Android. Вот оно!