Чтобы получить созданные вами динамические ссылки Firebase, вы должны включить SDK динамических ссылок в свое приложение и вызвать метод FirebaseDynamicLinks.getDynamicLink()
при загрузке приложения, чтобы получить данные, переданные в динамической ссылке.
Настройте Firebase и Dynamic Links SDK
Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
При регистрации приложения укажите ключ подписи SHA-1. Если вы используете ссылки на приложения, также укажите свой ключ SHA-256.
В файле Gradle вашего модуля (уровня приложения) (обычно
<project>/<app-module>/build.gradle
) добавьте зависимость для библиотеки динамических ссылок Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.Для оптимальной работы с динамическими ссылками мы рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в ваше приложение.
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.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-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Используя 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-ktx:21.1.0' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.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 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:21.1.0' implementation 'com.google.firebase:firebase-analytics:21.3.0' }
- В консоли Firebase откройте раздел Dynamic Links . Примите условия обслуживания, если вам будет предложено это сделать.
Добавьте фильтр намерений для ссылок на контент
Как и в случае с простыми ссылками на контент , вы должны добавить новый фильтр намерений к действию, которое обрабатывает ссылки на контент для вашего приложения. Фильтр намерений должен улавливать глубокие ссылки вашего домена, поскольку динамическая ссылка будет перенаправлять на ваш домен, если ваше приложение установлено. Это необходимо для того, чтобы ваше приложение получало данные 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. Обычно это автоматически добавляется плагином
google-services
Gradle. - Включите файл конфигурации
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 обрабатывает это автоматически для ваших доменов Dynamic Links, но вы можете проверить это, открыв файлassetlinks.json
, размещенный в вашем домене Dynamic Links:https://YOUR_DOMAIN/.well-known/assetlinks.json
Все имена пакетов ваших приложений Firebase должны быть включены.Динамические ссылки теперь будут отправляться непосредственно в ваше приложение. Вы сможете получить ссылку на контент и другие данные динамической ссылки, вызвав
getDynamicLink()
в действии, в которое вы добавили фильтр намерений ссылок на приложения (как описано в разделе Обработка ссылок на контент ).Примечание. Поскольку вызов через ссылки на приложения приводит пользователя непосредственно к приложению, динамическая ссылка не может учитывать требуемую минимальную версию. Поэтому после открытия приложения вам необходимо сравнить минимальную версию Dynamic Link ( getminimumappversion ) с PackageInfo.versionCode и при необходимости перенаправить пользователя на обновление приложения с помощью getUpdateAppIntent .
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2023-05-27 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Отсутствует нужная мне информация" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Слишком сложен/слишком много шагов" },{ "type": "thumb-down", "id": "outOfDate", "label":"Устарел" },{ "type": "thumb-down", "id": "translationIssue", "label":"Проблема с переводом текста" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Проблемы образцов/кода" },{ "type": "thumb-down", "id": "otherDown", "label":"Другое" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Прост для понимания" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Помог мне решить мою проблему" },{ "type": "thumb-up", "id": "otherUp", "label":"Другое" }]