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

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

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

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

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

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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.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, вы должны указать каждую версию библиотеки 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.0.1'
    }
    
    Ищете библиотечный модуль, специфичный для Kotlin? Начиная с октября 2023 года (Firebase BoM 32.5.0) от основного модуля библиотеки могут зависеть как разработчики Kotlin, так и Java (подробнее см. FAQ по этой инициативе ).
  3. В консоли Firebase откройте раздел «Динамические ссылки» . Примите условия обслуживания, если вам будет предложено это сделать.

Как и в случае с обычными глубокими ссылками , вы должны добавить новый фильтр намерений в действие, которое обрабатывает глубокие ссылки для вашего приложения. Фильтр намерений должен улавливать глубокие ссылки вашего домена, поскольку динамическая ссылка будет перенаправляться на ваш домен, если ваше приложение установлено. Это необходимо для того, чтобы ваше приложение получало данные Dynamic Link после его установки/обновления из Play Store и нажатия кнопки «Продолжить». В 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>

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

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

Kotlin+KTX

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. Обычно это автоматически добавляется плагином Gradle google-services .
    • Включите файл конфигурации google-services.json в свое приложение.
    • Вызовите FirebaseAnalytics.getInstance() перед вызовом FirebaseDynamicLinks.getDynamicLink() .

В Android 6.0 (уровень API 23) и более поздних версиях вы можете настроить свое приложение для обработки динамических ссылок напрямую, когда ваше приложение уже установлено, с помощью ссылок на приложения Android .

Убедитесь, что вы добавили отпечаток сертификата SHA256 для своего приложения в свой проект в консоли Firebase . Dynamic Links выполнит настройку связи веб-сайта App Links с вашим доменом 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 необходимо указать ваш домен динамических ссылок, а не домен вашей глубокой ссылки.

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

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

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

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