Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

  2. Использование Firebase Android Банка Москвы , объявить зависимость для библиотеки динамической ссылки Android в вашем модуле (приложение уровня) Gradle файл (обычно app/build.gradle ).

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

    Джава

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare 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 Банка Москвы , ваше приложение будет всегда использовать совместимые версии библиотек Firebase Android.

    (Альтернативный) Объявляет Firebase библиотеки зависимостей без использования спецификации

    Если вы решите не использовать Firebase BoM, вы должны указать каждую версию библиотеки Firebase в ее строке зависимости.

    Обратите внимание , что если вы используете несколько библиотеки Firebase в вашем приложении, мы настоятельно рекомендуем использовать спецификации для управления версиями библиотеки, что гарантирует , что все версии совместимы.

    dependencies {
        // Declare 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.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.0'
    }
    

    Котлин + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare 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 Банка Москвы , ваше приложение будет всегда использовать совместимые версии библиотек Firebase Android.

    (Альтернативный) Объявляет Firebase библиотеки зависимостей без использования спецификации

    Если вы решите не использовать Firebase BoM, вы должны указать каждую версию библиотеки Firebase в ее строке зависимости.

    Обратите внимание , что если вы используете несколько библиотеки Firebase в вашем приложении, мы настоятельно рекомендуем использовать спецификации для управления версиями библиотеки, что гарантирует , что все версии совместимы.

    dependencies {
        // Declare 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.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
    }
    
  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() метод:

Джава

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);
            }
        });

Котлин + KTX

Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { 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) }

Вы должны вызвать 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 App Links .

Убедитесь , что вы добавили сертификат отпечаток SHA256 для вашего приложения в свой проект в консоли Firebase . Dynamic Links будет обрабатывать настройку ассоциации веб-сайтов App Links для вашего домена Dynamic Links.

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

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

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

Теперь динамические ссылки будут отправляться прямо в ваше приложение. Вы сможете получить глубокие ссылки и другие данные Dynamic Link по телефону getDynamicLink() в деятельности вы добавили фильтр намерений App ссылки на (как описано в Рукоятки глубоких связей ).

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