Откройте приложение 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.
Вот оно!