Получите динамические ссылки Firebase на Android

Чтобы получить созданные вами Firebase Dynamic Links , необходимо включить в приложение Dynamic Links SDK и вызвать метод FirebaseDynamicLinks.getDynamicLink() при загрузке приложения, чтобы получить данные, переданные в Dynamic Link .

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .

    При регистрации приложения укажите свой ключ подписи SHA-1. Если вы используете App Links, укажите также свой ключ SHA-256.

  2. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость для библиотеки Dynamic Links для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.

    Для оптимальной работы с Dynamic Links мы рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в ваше приложение.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.14.0"))
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }

    Благодаря использованию Firebase Android BoM ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернатива) Добавьте зависимости библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вам необходимо указать каждую версию библиотеки Firebase в строке ее зависимостей.

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

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:22.4.0'
    }
    Ищете модуль библиотеки, специфичный для Kotlin? Начиная с октября 2023 года ( Firebase BoM 32.5.0) разработчики Kotlin и Java смогут полагаться на основной модуль библиотеки (подробности см. в разделе часто задаваемых вопросов об этой инициативе ).
  3. В консоли Firebase откройте раздел Dynamic Links . Примите условия обслуживания, если вам будет предложено это сделать.

Как и в случае с простыми глубокими ссылками , необходимо добавить новый фильтр намерений в действие, которое обрабатывает глубокие ссылки для вашего приложения. Фильтр намерений должен улавливать глубокие ссылки вашего домена, поскольку Dynamic Link будет перенаправлять на ваш домен, если ваше приложение установлено. Это необходимо для того, чтобы ваше приложение получало данные Dynamic Link после установки/обновления из Play Store и нажатия кнопки Continue. В AndroidManifest.xml :

<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:host="example.com"
        android:scheme="https"/>
</intent-filter>

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

Чтобы получить глубокую ссылку, вызовите метод getDynamicLink() :

Kotlin

Firebase.dynamicLinks
    .getDynamicLink(intent)
    .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? ->
        // Get deep link from result (may be null if no link is found)
        var deepLink: Uri? = null
        if (pendingDynamicLinkData != null) {
            deepLink = pendingDynamicLinkData.link
        }

        // Handle the deep link. For example, open the linked
        // content, or apply promotional credit to the user's
        // account.
        // ...
    }
    .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }

Java

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
            @Override
            public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                // Get deep link from result (may be null if no link is found)
                Uri deepLink = null;
                if (pendingDynamicLinkData != null) {
                    deepLink = pendingDynamicLinkData.getLink();
                }


                // Handle the deep link. For example, open the linked
                // content, or apply promotional credit to the user's
                // account.
                // ...

                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "getDynamicLink:onFailure", e);
            }
        });

Вы должны вызывать getDynamicLink() в каждой активности, которая может быть запущена ссылкой, даже если ссылка может быть доступна из намерения с помощью getIntent().getData() . Вызов getDynamicLink() извлекает ссылку и очищает эти данные, поэтому они обрабатываются вашим приложением только один раз.

Обычно вы вызываете getDynamicLink() в основном действии, а также в любых действиях, запущенных фильтрами намерений, которые соответствуют ссылке.

Аналитика записи

Следующие события можно автоматически отслеживать в Google Analytics и отображать в консоли Firebase .

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

Чтобы зарегистрировать эти события, вам необходимо настроить Google Analytics перед получением глубокой ссылки. Проверьте выполнение следующих условий:

  • Вызовите FirebaseDynamicLinks.getDynamicLink() в точках входа вашего приложения:
    • Действия запуска. Например: action="android.intent.action.MAIN" , category="android.intent.category.LAUNCHER" .
    • Точки входа в действие. Например: onStart() , onCreate() .
    • Действия по глубоким ссылкам.
  • Настройка и использование Google Analytics :
    • Включите зависимость Google Analytics . Обычно она автоматически добавляется плагином google-services Gradle.
    • Включите файл конфигурации google-services.json в свое приложение.
    • Вызовите FirebaseAnalytics.getInstance() перед вызовом FirebaseDynamicLinks.getDynamicLink() .

На устройствах Android 6.0 (уровень API 23) и выше вы можете настроить приложение для обработки Dynamic Links напрямую, если оно уже установлено, с помощью Android App Links .

Убедитесь, что вы добавили отпечаток сертификата SHA256 для вашего приложения в проект в консоли Firebase . Dynamic Links будет заниматься настройкой ассоциации веб-сайта App Links для вашего домена Dynamic Links .

Добавьте автоматически проверенный фильтр намерений в Activity, который будет обрабатывать Dynamic Link , установив хост на домен Dynamic Links вашего проекта, как указано в консоли Firebase . В AndroidManifest.xml :

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:host="example.com/link" android:scheme="http"/>
    <data android:host="example.com/link" android:scheme="https"/>
</intent-filter>

Обратите внимание, что android:host должен быть указан на домене Dynamic Links , а не на домене вашей глубокой ссылки.

Все фильтры намерений autoVerify в вашем манифесте должны быть зарегистрированы для того, чтобы App Links задействовались. Firebase обрабатывает это автоматически для ваших доменов Dynamic Links , но вы можете проверить это, открыв файл assetlinks.json , размещенный на вашем домене Dynamic Links :

https://YOUR_DOMAIN/.well-known/assetlinks.json
Должны быть включены все имена пакетов ваших приложений Firebase.

Dynamic Links теперь будут отправляться напрямую в ваше приложение. Вы сможете получить глубокую ссылку и другие данные Dynamic Link , вызвав getDynamicLink() в Activity, в которую вы добавили фильтр намерений App Links (как описано в разделе Обработка глубоких ссылок ).

Примечание: поскольку вызов через App Links переносит пользователя непосредственно в приложение, Dynamic Link не может соблюдать требуемую минимальную версию. Поэтому после открытия приложения вам необходимо сравнить минимальную версию Dynamic Link ( getminimumappversion ) с PackageInfo.versionCode и перенаправить пользователя для обновления приложения, если это необходимо, с помощью getUpdateAppIntent .