Чтобы получить созданные вами Firebase Dynamic Links , необходимо включить SDK Dynamic Links в ваше приложение и вызвать метод 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:34.7.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:23.0.0' }
- В консоли Firebase откройте раздел Dynamic Links . Примите условия использования, если появится соответствующий запрос.
Добавьте фильтр намерений для прямых ссылок.
Как и в случае с обычными глубокими ссылками , необходимо добавить новый фильтр намерений в активность, которая обрабатывает глубокие ссылки для вашего приложения. Фильтр намерений должен перехватывать глубокие ссылки вашего домена, поскольку 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() в каждом Activity, которое может быть запущено по этой ссылке, даже если ссылка доступна из Intent с помощью 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". - Точки входа в Activity. Например:
onStart(),onCreate(). - Действия с прямыми ссылками.
- Настройка и использование Google Analytics :
- Добавьте зависимость Google Analytics . Обычно она добавляется автоматически плагином
google-servicesдля Gradle. - Включите конфигурационный файл
google-services.jsonв ваше приложение. - Перед вызовом
FirebaseDynamicLinks.getDynamicLink()вызовите методFirebaseAnalytics.getInstance().
Обработка 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 переводит пользователя непосредственно в приложение, Dynamic Link не может учитывать требуемую минимальную версию. Поэтому после открытия приложения необходимо сравнить минимальную версию Dynamic Link ( getminimumappversion ) с PackageInfo.versionCode и перенаправить пользователя на страницу обновления приложения, если это необходимо, с помощью getUpdateAppIntent .