как сделать ссылки с моего веб-сайта на мое приложение, если оно установлено
Чего бы я хотел добиться
Когда пользователь нажимает на любую ссылку с моего веб-сайта, я хочу, чтобы он направлял ссылку для конкретного пользователя в моем приложении (если оно установлено). Если он не установлен, попросите пользователя перейти по ссылке в браузере.
Пример:
Пользователь получает электронное письмо со ссылкой под названием: www.myapp.com/someplaceinmyapp. Оно переходит на эту страницу в моем приложении, если оно установлено. Если нет, то перейдите на эту страницу в браузере.
Имейте в виду, что это будет для всех страниц в моем приложении. Так что это применимо к любой ссылке с моей веб-страницы.
Мои вопросы
Есть ли для этого конкретное название? Я знаю о глубоких ссылках и ссылках на приложения, но не уверен, какая из них мне подходит.
Это вообще возможно? Я даже не уверен, возможно ли это на данный момент.
Будет ли код для этого на веб-сайте или в приложении? например: Javascript или Kotlin или что-то в файле манифеста.
Как мне это сделать? Наверное, это то, что мне нужно больше всего.
Заметки
У меня есть что-то на моей веб-странице, которое показывает всплывающее окно (только в браузере) с надписью «Используйте приложение». Если не установлен, то переходит в play store. Если установлен, то переходит на домашнюю страницу моего веб-сайта в моем приложении. Я нашел, как это сделать здесь, используя ответ с наибольшим количеством голосов (не принятый), поэтому в моем манифесте у меня есть:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="www.myapp.com"
android:pathPrefix="/install.html" />
</intent-filter>
Если у вас есть что-то, что вы хотите добавить к моим вопросам, я с радостью добавлю это.
Ответы
Для ввода спецификации Activity
или Fragment
вашего приложения с URL- адреса рекомендуется использовать глубокие ссылки из компонента навигации.
1. Добавьте ссылку на URL в файл ресурсов навигации (с панели «Атрибуты»):
<fragment
android:id="@+id/studentEditorFragment"
android:name="com.example.roomtest.studentEditor.StudentEditorFragment"
android:label="StudentEditorFragment"
tools:layout="@layout/fragment_student_editor">
<argument
android:name="studentId"
app:argType="long" />
<deepLink
android:id="@+id/deepLink"
app:uri="www.example.com/roomTest/{studentId}" /> //here, company domain name followed by application path or argument
</fragment>
2. Добавьте в AndroidManifest
файл атрибут навигации :
<activity android:name=".MainActivity"> //【inside the "<activity>" tag】
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<nav-graph android:value="@navigation/navigation" /> //here
</activity>
3. Воспользуйтесь ссылкой в веб-браузере или текстовым сообщением: «www.example.com/roomTest/-1».
- Для передачи нескольких аргументов просто соедините их символом «&», например: «www.example.com/roomText/-1&true» (переформатируйте «&» в xml по запросу).
Полезное видео: https://www.youtube.com/watch?v=hEJ78_KLcfA
Полезное чтение: https://developer.android.com/guide/navigation/navigation-deep-link
Поведение обратного стека из Deep Link: https://stackoverflow.com/a/50359375/3466808
Я обнаружил, что для этого использовался помощник по ссылкам на приложения, который вы можете найти в студии Android в разделе Инструменты -> Помощник по ссылкам приложений. Вот что вы должны увидеть сбоку, когда откроете его:

Шаг 1
Нажмите «Открыть редактор сопоставления URL-адресов», затем добавьте сопоставление URL-адресов (нажмите «+»). В хосте поместите ссылку на свой веб-сайт, например:https://www.example.com. В поле «Путь» в поле выбора выберите просто «путь» и ничего не вставляйте в поле типа.

Шаг 2
Кнопка Select Activity не работает для Kotlin, поэтому вот код, который вам нужно ввести вручную.
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
val wbWebView = findViewById<View>(R.id.your_webview) as WebView
val appLinkAction = intent.action
val appLinkData = intent.data
if (Intent.ACTION_VIEW == appLinkAction && appLinkData != null) {
wbWebView.loadUrl(appLinkData.toString())
} else {
// default link that it goes to when opening app
wbWebView.loadUrl("https://www.example.com")
}
}
и в вашем onCreate добавьте handleIntent(intent)
Шаг 3
Щелкните «Открыть генератор файлов ссылок на цифровые активы». Большая часть информации уже будет заполнена, так что вы можете нажать «Создать файл ссылок на цифровые активы». Создайте на своем веб-сайте папку с именем «.well-known», а затем поместите туда файл с именем «assetlinks.json» и вставьте туда превью. Итак, когда вы идете вhttps://www.yourwebsite.com/.well-known/assetlinks.jsonвы должны увидеть файл ссылок на цифровые активы. Вы также можете просмотреть файл ссылок на цифровые активы других веб-сайтов. Как и в Google,https://www.google.com/.well-known/assetlinks.json.

Затем нажмите кнопку «Связать и подтвердить». Если все пойдет хорошо, вы должны увидеть, что это отображается под кнопкой:

Шаг 4
Время проверить! Идите вперед, нажмите «Проверить ссылки приложения» и введите URL-адрес своего веб-сайта. Если все идет хорошо, вы не должны видеть диалоговое окно с разрешением неоднозначности.
Я также хотел бы провести дальнейшее тестирование, отправив себе электронное письмо со ссылкой.
Заметки
Вы можете использовать Ассистент ссылок на приложения, только если ваш веб-сайт использует https вместо http.
Я добавил android:launchMode="singleTask"
в свой тег активности в манифесте, это означает, что если вы нажмете ссылку со своего веб-сайта в электронном письме, она откроется в новом окне.
У них есть документ об этом здесь, который включает видео (имейте в виду, что они используют java)
Используйте ссылки приложений Android в своем приложении. При правильной реализации пользователь будет перемещен непосредственно в указанное место назначения в приложении.
Подробнее об этом в этих документах:
Проверить ссылки на приложения для Android
Создайте неявную ссылку на контент