Когда пользователь нажимает на любую ссылку с моего веб-сайта, я бы хотел, чтобы он направлял конкретную ссылку пользователя в моем приложении (если оно установлено). Если он не установлен, направьте пользователя по ссылке в браузере.
Пример:
Пользователь получает электронное письмо со ссылкой: www.myapp.com/someplaceinmyapp Он переходит на эту страницу в моем приложении, если оно установлено. Если нет, то перейдите на эту страницу в браузере.
Имейте в виду, что это будет для всех страниц в моем приложении. Так что это относится к любой ссылке с моей веб-страницы.
Есть ли для этого конкретное название? Я знаю о глубоких ссылках и ссылках на приложения, но я не уверен, что мне подходит.
Это вообще возможно? Я даже не уверен, возможно ли это на данный момент.
Будет ли код для этого находиться на сайте или в приложении? например: Javascript или Kotlin или что-то в файле манифеста.
Как мне это сделать? Это, наверное, то, что мне нужно больше всего.
У меня есть что-то на моей веб-странице, которая показывает всплывающее окно (только в браузере) с надписью «Используйте приложение». Если не установлено, то идет в плей маркет. Если установлено, то переходит на домашнюю страницу моего сайта в моем приложении. Я нашел, как это сделать из здесь, используя ответ с наибольшим количеством голосов (не принятый), поэтому в моем манифесте у меня есть:
<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>
Если есть что-то, что вы хотели бы, чтобы я добавил к этому вопросу, просто дайте мне знать :)
Да, это то, что мне нужно.
Как сказано в описании к видео, да, я хотел бы получить обучающую программу по этому вопросу.
Используйте ссылки на Android-приложения в своем приложении. При правильной реализации пользователь будет перемещен непосредственно в указанное место назначения в приложении.
Дополнительная информация об этом в этих документах:
Для ввода конкретных 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».
Полезное видео: https://thewikihow.com/video_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 , вы сможете увидеть файл ссылок на цифровые активы. Вы также можете увидеть другие веб-сайты Файл ссылок на цифровые активы. Лайк для гугла, https://www.google.com/.well-known/assetlinks.json.
Затем нажмите кнопку «Связать и подтвердить». Если все пойдет хорошо, вы увидите это под кнопкой:
Шаг 4
Время тестировать! Нажмите «Проверить ссылки на приложения» и введите URL-адрес с вашего веб-сайта. Если все пойдет хорошо, вы не должны увидеть диалог значений неоднозначности.
Я также хотел бы провести дальнейшее тестирование, отправив себе электронное письмо со ссылкой в нем.
Примечания
Вы можете использовать Помощник по ссылкам на приложения, только если ваш веб-сайт использует https вместо http.
Я добавил android:launchMode = "singleTask"
в свой тег активности в манифесте, это означает, что если вы нажмете на ссылку с вашего сайта в электронном письме, она откроется в новом окне.
У них есть документ об этом здесь, который включает видео (имейте в виду, что они используют java)
Если кому-то нужно больше заметок по этому поводу или есть какие-либо вопросы, не стесняйтесь спрашивать :)
Вы имеете в виду вот так? youtu.be/-Vpf2phPoF0