Чтобы получить созданные вами Firebase Dynamic Links , необходимо включить Dynamic Links SDK в свое приложение и вызвать метод FirebaseDynamicLinks.getDynamicLink()
при загрузке приложения, чтобы получить данные, переданные в Dynamic Link .
Настройка Firebase и Dynamic Links SDK
Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .
При регистрации приложения укажите ключ подписи SHA-1. Если вы используете App Links, укажите также ключ SHA-256.
В файле 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.16.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.
Ищете модуль библиотеки, специфичный для Kotlin? С октября 2023 года ( Firebase BoM 32.5.0) разработчики как Kotlin, так и Java смогут использовать основной модуль библиотеки (подробности см. в разделе часто задаваемых вопросов об этой инициативе ).(Альтернатива) Добавьте зависимости библиотеки 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.5.0' }
- В консоли Firebase откройте раздел Dynamic Links . Примите условия обслуживания, если будет предложено это сделать.
Добавьте фильтр намерений для глубоких ссылок
Как и в случае с обычными глубокими ссылками , необходимо добавить новый фильтр намерений в Activity, который обрабатывает глубокие ссылки для вашего приложения. Фильтр намерений должен перехватывать глубокие ссылки вашего домена, поскольку Dynamic Link будет перенаправлять на ваш домен, если приложение установлено. Это необходимо для того, чтобы ваше приложение получало данные 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>
Когда пользователи открывают 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 . Обычно она автоматически добавляется плагином Gradle
google-services
. - Включите файл конфигурации
google-services.json
в свое приложение. - Вызовите
FirebaseAnalytics.getInstance()
перед вызовомFirebaseDynamicLinks.getDynamicLink()
.
Обработка Dynamic Links с помощью App Links
На устройствах с 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 , а не для домена вашей глубокой ссылки.
Для использования App Links все фильтры намерений autoVerify
в вашем манифесте должны быть зарегистрированы. Firebase автоматически обрабатывает это для ваших доменов Dynamic Links , но вы можете проверить это, открыв файл assetlinks.json
, размещённый на вашем домене Dynamic Links :
https://YOUR_DOMAIN/.well-known/assetlinks.json
Dynamic Links теперь будут отправляться непосредственно в ваше приложение. Вы сможете получить глубинную ссылку и другие данные Dynamic Link , вызвав метод getDynamicLink()
в Activity, в которую вы добавили фильтр намерений App Links (как описано в разделе Обработка глубинных ссылок ).
Примечание: Поскольку вызов через App Links перенаправляет пользователя непосредственно в приложение, динамическая ссылка не может учитывать требуемую минимальную версию. Поэтому после открытия приложения необходимо сравнить минимальную версию динамической ссылки ( getminimumappversion ) с PackageInfo.versionCode и при необходимости перенаправить пользователя на обновление приложения с помощью getUpdateAppIntent .