как сделать ссылки с моего веб-сайта на мое приложение, если оно установлено

Dec 24 2020

Чего бы я хотел добиться

Когда пользователь нажимает на любую ссылку с моего веб-сайта, я хочу, чтобы он направлял ссылку для конкретного пользователя в моем приложении (если оно установлено). Если он не установлен, попросите пользователя перейти по ссылке в браузере.

Пример:

Пользователь получает электронное письмо со ссылкой под названием: 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>

Если у вас есть что-то, что вы хотите добавить к моим вопросам, я с радостью добавлю это.

Ответы

SamChen Dec 25 2020 at 02:55

Для ввода спецификации 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

Amy Jan 06 2021 at 07:01

Я обнаружил, что для этого использовался помощник по ссылкам на приложения, который вы можете найти в студии 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)

AlphaOne Dec 24 2020 at 10:43

Используйте ссылки приложений Android в своем приложении. При правильной реализации пользователь будет перемещен непосредственно в указанное место назначения в приложении.

Подробнее об этом в этих документах:

Проверить ссылки на приложения для Android

Создайте неявную ссылку на контент