Чтобы получить Firebase Dynamic Links, который
вы создали, необходимо добавить в приложение SDK Dynamic Links и вызвать метод FirebaseDynamicLinks.getDynamicLink() при загрузке приложения, чтобы получить данные, переданные в Dynamic Link.
Настройте Firebase и SDK Dynamic Links
Если вы ещё этого не сделали, добавьте Firebase в проект для Android.
При регистрации приложения укажите ключ подписи SHA-1. Если вы используете ссылки на приложения, также укажите ключ 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 Аналитики.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.1")) // 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:24.0.0' }
- В консоли Firebase откройте раздел Dynamic Links. Примите Условия использования, если появится запрос.
Добавьте фильтр интентов для ссылок на контент
Как и в случае с
простыми ссылками на контент, вам нужно добавить новый фильтр интентов к действию, которое обрабатывает ссылки на контент в вашем приложении. Фильтр интентов должен перехватывать ссылки на контент вашего домена, поскольку Dynamic Link будет перенаправлять на ваш домен, если ваше приложение установлено. Это необходимо, чтобы приложение могло получать данные Dynamic Link после установки или обновления из Google Play и нажатия кнопки "Продолжить". В 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() вызывается в основном объекте Activity, а также в любых объектах Activity, запущенных фильтрами интентов, которые соответствуют ссылке.
Запись аналитики
В Google Analytics можно автоматически отслеживать перечисленные ниже события и просматривать их в консоли Firebase.
dynamic_link_app_opendynamic_link_first_opendynamic_link_app_update
Чтобы регистрировать эти события, необходимо настроить Google Analytics до получения ссылки на контент. Убедитесь, что выполняются следующие условия:
- Вызовите
FirebaseDynamicLinks.getDynamicLink()в точках входа приложения: - Действия на панели запуска, например:
action="android.intent.action.MAIN",category="android.intent.category.LAUNCHER". - Точки входа в занятия, например:
onStart(),onCreate(). - Действия со ссылками на контент.
- Как настроить и использовать Google Analytics:
- Добавьте зависимость Google Analytics. Обычно это автоматически добавляется плагином
google-servicesGradle. - Добавьте в приложение файл конфигурации
google-services.json. - Вызовите
FirebaseAnalytics.getInstance()перед вызовомFirebaseDynamicLinks.getDynamicLink().
Обработка Dynamic Links с помощью App Links
В Android 6.0 (уровень API 23) и более поздних версиях можно настроить приложение так, чтобы оно обрабатывало Dynamic Links напрямую, если оно уже установлено. Для этого используются ссылки на приложения для Android.
Убедитесь, что вы добавили цифровой отпечаток сертификата SHA256 для приложения в проект в консоли Firebase. Dynamic 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 в манифесте. Firebase делает это автоматически для доменов Dynamic Links, но вы можете проверить это, открыв файл assetlinks.json, размещенный в домене Dynamic Links:
https://YOUR_DOMAIN/.well-known/assetlinks.json
Теперь Dynamic Links будет отправляться напрямую в приложение. Вы сможете получить ссылку на контент и другие данные Dynamic Link, вызвав getDynamicLink() в Activity, к которому вы добавили фильтр интентов для ссылок на приложение (как описано в разделе Обработка ссылок на контент).
Примечание. Поскольку при вызове через ссылки на приложение пользователь переходит непосредственно в приложение, динамическая ссылка не может учитывать требуемую минимальную версию. Поэтому после открытия приложения вам нужно сравнить минимальную версию динамической ссылки ( getminimumappversion) с PackageInfo.versionCode и при необходимости перенаправить пользователя на страницу обновления приложения с помощью getUpdateAppIntent.