В этом руководстве по миграции основное внимание уделяется использованию ссылок приложений и универсальных ссылок , а также опциональному использованию хостинга Firebase для размещения файлов связи приложения с сайтом.
Эта миграция заменяет следующие функции Firebase Dynamic Links:
Особенность | Динамические ссылки Firebase | Ссылки на приложения / Универсальные ссылки |
---|---|---|
Направляйте пользователей в нужный магазин для их устройств одним щелчком по ссылке | ★ | |
Предоставьте пользователям возможность продолжить путешествие после загрузки и установки вашего приложения с помощью отложенной глубокой ссылки | ★ | |
Предоставьте пользователям контекстный опыт с использованием глубоко связанного контента в вашем приложении (если оно уже установлено) | ||
Предоставление аналитических данных, связанных с событиями нажатия на динамические ссылки | ||
Предоставить возможность создания коротких URL-адресов ссылок |
Если вам по-прежнему требуются другие функции Firebase Dynamic Link для миграции, которые не поддерживаются в этом руководстве, ознакомьтесь с другими сценариями миграции в документации по часто задаваемым вопросам об устаревании динамических ссылок .
Предположим, у вас есть динамическая ссылка Firebase, которая выглядит следующим образом:
Пример динамической ссылки | |
---|---|
Имя ссылки | Добро пожаловать на Example.com |
Глубокая ссылка | https://example.web.app/welcome |
Android-приложение | com.example.android |
приложение Apple | com.example.ios |
Длинная динамическая ссылка | https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos |
Короткая динамическая ссылка | https://example.page.link/m9Mm |
Целью данного руководства по миграции является замена динамических ссылок Firebase следующим образом:
https://example.page.link/m9Mm
С помощью глубоких ссылок App Link / Universal Link, которые выглядят следующим образом:
https:// your-project-domain .web.app/welcome
Обратите внимание, что глубокая ссылка App Link / Universal Link предоставит вашим пользователям следующее:
- Глубокая ссылка, по которой они могут щелкнуть и которая откроет ваше приложение, если оно уже установлено
- Продолжение пути пользователя, направляющее его в определенную часть вашего приложения при его открытии.
Однако глубокая ссылка App Link / Universal Link не будет обеспечивать следующие возможности для ваших пользователей (которые ранее обеспечивались Firebase Dynamic Links):
- Направление пользователей в нужный магазин для их устройств, чтобы загрузить и установить ваше приложение
- Предоставление продолжения пользовательского пути после загрузки, установки и открытия приложения в первый раз
Обратите внимание на различия в поведении и функциональности этих ссылок приложений/универсальных ссылок по сравнению с динамическими ссылками Firebase, указанными в таблице выше.
Прежде чем начать
Firebase Dynamic Links использует App Links (на Android) и Universal Links (на iOS) в своей собственной базовой реализации для обеспечения функциональности глубоких ссылок после того, как ваше приложение уже установлено.
В этом руководстве описывается, как создать собственные ссылки приложений и универсальные ссылки с помощью Firebase Hosting, чтобы заменить часть функциональности, предоставляемой Firebase Dynamic Links, при переносе ваших Firebase Dynamic Links на новое решение для миграции ссылок приложений и универсальных ссылок.
Для завершения миграции вам понадобится следующая информация:
- Динамические ссылки Firebase, которые вы собираетесь перенести
- Параметры URL-адреса глубокой ссылки, включенные в ваши динамические ссылки
- Домен, который вы планируете использовать для замены предыдущего домена Firebase Dynamic Links (если применимо)
Вы можете воспользоваться руководством по экспорту метаданных динамических ссылок, чтобы экспортировать существующие метаданные ссылок и получить указанную выше информацию.
Обзор этапов миграции
Создайте новый домен (если у вас его еще нет) для размещения файлов конфигурации App Link / Universal Link с помощью Firebase Hosting.
Создайте и разместите файлы конфигурации App Link / Universal Link на вашем домене хостинга.
Создайте новые ссылки приложений / универсальные ссылки, соответствующие схеме глубоких ссылок, используемой в ваших динамических ссылках Firebase.
Обновите свои приложения Android/iOS и код приложений, чтобы получать внешние ссылки.
Тестирование интеграции ссылок приложений и универсальных ссылок.
Замените опубликованные или общие динамические ссылки Firebase на ссылки приложений и универсальные ссылки.
Первый шаг будет общим для потоков миграции App Links или Universal Link. Остальное будет зависеть от платформы, поэтому перейдите к разделу руководства ниже в зависимости от того, какую платформу вы хотите мигрировать первой.
Создайте новый домен для размещения файлов конфигурации App Link / Universal Link с помощью Firebase Hosting.
Выберите домен
Первый шаг — выбрать домен, который вы хотели бы использовать для своих ссылок приложений / универсальных ссылок. Это будет домен, который будет использоваться для новых ссылок, которыми вы поделитесь со своими пользователями.
Если вы используете Firebase Hosting , поддомены проекта в формате your-project-domain .web.app
или your-project-domain .firebaseapp.com
автоматически предоставляются бесплатно. Вы можете по желанию использовать пользовательский домен с Firebase Hosting или без него для размещения файлов конфигурации App Link / Universal Link.
Настройка хостинга Firebase
Далее вам необходимо настроить и сконфигурировать экземпляр Firebase Hosting .
К моменту завершения настройки экземпляра Firebase Hosting у вас будет домен, похожий на your-project-domain .web.app
`, или пользовательский домен, если вы предпочитаете.
Этапы миграции для ссылок на приложения Android
Создайте и разместите файлы конфигурации App Link на новом домене хостинга.
Для использования App Links необходимо разместить файл конфигурации, который поможет установить безопасную связь между доменом, используемым в ваших ссылках, и вашим приложением. Для App Links это файл assetlinks.json
.
Действия по созданию и размещению файла assetlinks.json
Файл assetlinks.json
позволяет нам предоставить список авторизованных приложений, которые могут обрабатывать содержимое веб-домена, который мы будем использовать для наших ссылок приложений. Сам файл assetlinks.json должен быть размещен в корне веб-домена по пути: /.well-known
.
Для завершения настройки выполните следующие действия:
Создайте папку
.well-known
в папке public в корневом каталоге вашего хостинга Firebase.Создайте файл с именем
assetlinks.json
в папке.well-known
.Скопируйте следующее содержимое в файл assetlinks.json, обратив внимание на значение каждого поля ниже:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.android", "sha256_cert_fingerprints": ["01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF"] } }]
-
namespace
- относится к имени приложения, которое вы хотите предоставить -
package_name
— относится к applicationId, объявленному в файлеbuild.gradle
приложения -
sha256_cert_fingerprints
— относится к отпечатку SHA256 файла хранилища ключей, который вы используете для подписи приложения.
Вы можете использовать файл debug.keystore, используемый Android Studio, для генерации записи sha256_cert_fingerprints для целей отладки. Вы можете найти файл в
/Users/<username>/.android/debug.keystore
на Mac и Linux иC:\Users\<username>\.android\debug.keystore
на Windows.Из этого хранилища ключей вы можете извлечь значение SHA256 с помощью keytool.
Дополнительные инструкции по выполнению этого шага см. в этом разделе документации по ссылкам приложений.
В качестве альтернативы вы также можете использовать помощник App Links в Android Studio для генерации содержимого файла assetlinks.json и настройки приложения для обработки App Links.
-
Обновите файл firebase.json, чтобы проиндексировать его для хостинга.
"headers": [ { "source": "/.well-known/assetlinks.json", "headers": [ { "key": "Content-Type", "value": "application/json" } ] } ]
Теперь, когда у нас есть файл assetlinks.json, запустите
firebase deploy
для размещения изменений.Обратите внимание, что для запуска указанной выше команды развертывания вам потребуется установить Firebase CLI .
firebase deploy --only hosting
Проверьте файл assetlinks.json, перейдя по адресу
https:// your-project-domain .web.app/.well-known/assetlinks.json
Создайте новые ссылки на приложения, соответствующие схеме глубоких ссылок, используемой в ваших динамических ссылках Firebase.
На этом этапе вы воссоздадите глубокие ссылки из своих динамических ссылок Firebase, используя обычные URL-адреса глубоких ссылок, соответствующие новому домену, который вы создали для своих ссылок приложений.
Например, предположим, что у вас есть следующая динамическая ссылка Firebase:
Пример динамической ссылки | |
---|---|
Имя ссылки | Добро пожаловать на Example.com |
Глубокая ссылка | https://example.web.app/welcome |
Android-приложение | com.example.android |
приложение Apple | com.example.ios |
Длинная динамическая ссылка | https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos |
Короткая динамическая ссылка | https://example.page.link/m9Mm |
В этом случае вы извлечете параметр глубокой ссылки, например https://example.web.app/welcome, и теперь будете использовать его в качестве параметра ссылки на приложение для своего приложения.
Вам нужно будет повторить этот процесс для каждой динамической ссылки Firebase, которую вы хотите перенести с помощью ссылок приложений/универсальных ссылок, и скопировать использованную вами схему глубоких ссылок.
Например, ознакомьтесь со следующим набором коротких ссылок Firebase Dynamic Links, параметров глубоких ссылок и перенесенных значений глубоких ссылок:
Короткая ссылка | Параметр глубокой ссылки | Перенесенная глубокая ссылка |
---|---|---|
yourapp.page.link/welcome | https://example.com/welcome | yourapp.web.app/welcome |
yourapp.page.link/c7sn | https://example.com/main/?p=23&t=1 | yourapp.web.app/main/?p=23&t=1 |
yourapp.page.link/social | https://example.com/friendinvite/?add=1 | yourapp.web.app/friendinvite/?add=1 |
Далее вам нужно будет заменить все экземпляры динамических ссылок Firebase, которые были опубликованы или предоставлены в общий доступ, новыми перенесенными глубокими ссылками, чтобы пользователи нажимали на эти ссылки приложений вместо предыдущих динамических ссылок Firebase.
Обновите свое приложение Android и код приложения, чтобы получать глубокие ссылки
Следующим шагом после выбора домена, выбора схемы глубоких ссылок и переноса динамических ссылок Firebase в ссылки приложений является обновление приложения Android и кода приложения для получения новых глубоких ссылок.
Мы рекомендуем следовать полной документации по ссылкам приложений здесь или руководству Android Studio по настройке приложения для обработки глубоких ссылок, но основные шаги включают в себя:
- Определение того, какие действия должны обрабатывать соответствующие глубокие ссылки
- Добавление фильтра намерений для этих действий в файл AndroidManifest.xml
- Получение глубокой ссылки в коде приложения вашей деятельности
Допустим, вы хотите использовать MainActivity для обработки некоторых из ваших глубоких ссылок. Для этого вам нужно будет добавить следующий Intent Filter в MainActivity в вашем файле AndroidManifest.xml:
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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.web.app" android:scheme="http"
android:pathPrefix="/welcome" />
<data android:host="example.web.app" android:scheme="https"
android:pathPrefix="/welcome" />
</intent-filter>
</activity>
На этом шаге вы указываете, что MainActivity является местом назначения для обработки глубоких ссылок из домена wxample.web.app, и что это включает префикс пути /welcome. Обратите внимание, что вам также нужно будет указать атрибут android:autoVerify="true", который позволяет вам назначить ваше приложение обработчиком по умолчанию для данного типа ссылки.
Наконец, вам нужно будет добавить код в MainActivity для извлечения данных deep-link и использования их для управления deep-link-опытом в вашем приложении. Это похоже на логику, которую вы, возможно, уже закодировали в своем приложении, когда интегрировались с Firebase Dynamic Links.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
val data: Uri? = intent?.data
val toast = Toast.makeText(this, data, duration)
toast.show()
}
Тестирование ссылок приложений
Вы можете протестировать только что созданные ссылки приложений, запустив приложение на физическом устройстве или в эмуляторе Android .
Вам нужно будет создать кликабельную ссылку, используя домен, настроенный для ссылок вашего приложения, а затем щелкнуть по этой ссылке, чтобы убедиться, что она откроется в вашем приложении и перенаправит вас к нужному действию.
В качестве альтернативы вы также можете протестировать интеграцию App Links с помощью App Links Assistant в Android Studio или использовать следующую команду для настроенного вами URL-адреса App Link, чтобы убедиться, что он правильно запускает соответствующее действие:
adb shell am start -a android.intent.action.VIEW -d <your_deep_link_url>
Замените опубликованные или общие динамические ссылки Firebase на ссылки приложений
Последним шагом миграции будет замена опубликованных или общих динамических ссылок Firebase на ссылки приложений, где это возможно, и продолжение использования ссылок приложений в дальнейшем.
Выполнение этого шага будет зависеть от того, где и как вы опубликовали свои динамические ссылки Firebase, но чтобы помочь вам отслеживать, какие из них существуют, вы можете экспортировать существующие метаданные динамических ссылок Firebase. См. руководство по экспорту метаданных динамических ссылок .
Этапы перехода на универсальные ссылки на iOS
Создайте и разместите файлы конфигурации Universal Links на новом домене хостинга.
Для использования Universal Links необходимо разместить файл конфигурации, который помогает установить безопасную связь между доменом, используемым в ваших ссылках, и вашим приложением. Для Universal Links это файл apple-app-site-association
(также известный как файл AASA).
Действия по созданию и размещению файла apple-app-site-association
Файл AASA позволяет нам предоставить список авторизованных приложений, которые могут обрабатывать содержимое веб-домена, который мы будем использовать для наших универсальных ссылок. Сам файл AASA должен размещаться в корне веб-домена по пути: /.well-known.
Для завершения настройки выполните следующие действия:
Создайте папку « .well-known » в папке public в корневом каталоге вашего хостинга Firebase.
Создайте файл с именем « apple-app-site-association » в папке «.well-known».
Скопируйте следующее содержимое в файл apple-app-site-association, обратив внимание на значение каждого поля ниже:
{ "applinks": { "apps": [], "details": [ { "appID": "$TEAM_ID.com.firebase.UniversalLinks", "paths": [ "NOT /_/*", "/*" ] } ] } }
- $TEAM_ID.BundleId — полное имя приложения, уполномоченного обрабатывать ссылки.
Обновите файл firebase.json, чтобы проиндексировать его для хостинга.
"headers": [ { "source": "/.well-known/apple-app-site-association", "headers": [ { "key": "Content-Type", "value": "application/json" } ] } ]
Теперь, когда у нас есть файл AASA, выполните развертывание Firebase для размещения изменений.
Проверьте файл AASA, перейдя по адресу https:// your-project-domain .web.app/.well-known/app-app-site-association
Создайте новые универсальные ссылки, соответствующие схеме глубоких ссылок, используемой в ваших динамических ссылках Firebase.
На этом этапе вы воссоздадите глубокие ссылки из ваших динамических ссылок Firebase, используя обычные URL-адреса глубоких ссылок, соответствующие новому домену, который вы создали для своих универсальных ссылок.
Например, предположим, что у вас есть следующая динамическая ссылка Firebase:
Пример динамической ссылки | |
---|---|
Имя ссылки | Добро пожаловать на Example.com |
Глубокая ссылка | https://example.web.app/welcome |
Android-приложение | com.example.android |
приложение Apple | com.example.ios |
Длинная динамическая ссылка | https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos |
Короткая динамическая ссылка | https://example.page.link/m9Mm |
В этом случае вы извлечете параметр глубокой ссылки, например, https://example.web.app/welcome, и теперь будете использовать его в качестве параметра универсальной ссылки для своего приложения.
Вам нужно будет повторить этот процесс для каждой динамической ссылки Firebase, которую вы хотите перенести с помощью ссылок приложений/универсальных ссылок, и скопировать использованную вами схему глубоких ссылок.
Например, ознакомьтесь со следующим набором коротких ссылок Firebase Dynamic Links, параметров глубоких ссылок и перенесенных значений глубоких ссылок:
Короткая ссылка | Параметр глубокой ссылки | Перенесенная глубокая ссылка |
---|---|---|
yourapp.page.link/welcome | https://example.com/welcome | yourapp.web.app/welcome |
yourapp.page.link/c7sn | https://example.com/main/?p=23&t=1 | yourapp.web.app/main/?p=23&t=1 |
yourapp.page.link/social | https://example.com/friendinvite/?add=1 | yourapp.web.app/friendinvite/?add=1 |
Далее вам нужно будет заменить все экземпляры динамических ссылок Firebase, которые были опубликованы или предоставлены в общий доступ, новыми перенесенными глубокими ссылками, чтобы пользователи нажимали на эти универсальные ссылки вместо предыдущих динамических ссылок Firebase.
Обновите свое приложение iOS и код приложения, чтобы получать глубокие ссылки
Следующим шагом после выбора домена, выбора схемы глубоких ссылок и переноса динамических ссылок Firebase в универсальные ссылки является обновление приложения iOS и кода приложения для получения новых глубоких ссылок.
Мы рекомендуем следовать полной документации Universal Links по настройке приложения для обработки глубоких ссылок, но основные шаги включают в себя:
Обновите конфигурацию проекта, чтобы ваше приложение могло обрабатывать глубокие ссылки из вашего недавно созданного домена.
Получите глубокую ссылку в коде вашего приложения
Чтобы обновить конфигурацию проекта и разрешить приложению обрабатывать глубокие ссылки, вам потребуется добавить в проект в xCode дополнительный связанный домен для домена, который вы теперь планируете использовать для размещения файла apple-app-site-associate.
Это можно сделать следующим образом:
- Открытие Xcode
- Выбор вашего проекта в навигаторе файлов
- Перейдите на вкладку «Подписание и возможности» в настройках вашего проекта.
- Перейдите в раздел «Связанные домены».
- Нажмите кнопку +, чтобы добавить дополнительный домен в ваш проект в формате «applinks:
".
Наконец, вам необходимо обновить код приложения, чтобы иметь возможность получать входящие глубокие ссылки.
Для этого сначала обновите файл AppDelegate.swift, чтобы он отвечал на универсальную ссылку, добавив следующий код:
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
AppDelegate.showReceivedUrl(userActivity: userActivity);
return true
}
static func showReceivedUrl(userActivity: NSUserActivity) {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url.absoluteString)
}
Приведенный выше код переопределяет метод обратного вызова Universal Link и регистрирует URL-адрес глубокой ссылки, если он присутствует.
Теперь мы вызовем тот же метод showReceivedUrl
из класса SceneDelegate, поскольку, если приложение уже открыто к моменту, когда пользователь нажал на универсальную ссылку, будет вызван обратный вызов универсальной ссылки внутри SceneDelegate
.
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
AppDelegate.showReceivedUrl(userActivity: userActivity)
}
Тестирование универсальных ссылок
Вы можете протестировать только что созданные вами универсальные ссылки, запустив приложение на физическом устройстве или симуляторе .
Вам нужно будет создать кликабельную ссылку, используя домен, настроенный для ваших универсальных ссылок, а затем щелкнуть по этой ссылке, чтобы она открылась в вашем приложении и перенаправила вас на нужный экран в вашем приложении.
Поддержка смарт-баннеров приложений
Мы настоятельно рекомендуем использовать Smart App Banners , чтобы предоставить вашим пользователям возможности, аналогичные динамическим ссылкам Firebase.
Используя Smart App Banners, ваши пользователи будут перенаправлены в App Store для вашего списка приложений, если ваше приложение еще не установлено на их устройстве. Вы также можете дополнительно настроить параметр для передачи в ваше приложение после его загрузки и установки, чтобы предоставить вашим пользователям возможность продолжить их путешествие. Если ваше приложение уже установлено, оно откроется, передавая параметр в ваше приложение, чтобы помочь направить вашего пользователя к соответствующему контенту на основе Smart App Banner, на который они нажали.
Замените опубликованные или общие динамические ссылки Firebase на ссылки приложений
Последним шагом миграции будет замена опубликованных или общих динамических ссылок Firebase на универсальные ссылки, где это возможно, и продолжение использования универсальных ссылок в дальнейшем.
Выполнение этого шага будет зависеть от того, где и как опубликованы ваши динамические ссылки Firebase.
Чтобы помочь вам отслеживать существующие динамические ссылки Firebase для миграции, мы опубликуем руководство по экспорту метаданных коротких ссылок из динамических ссылок Firebase. Пожалуйста, проверяйте наш документ Dynamic Links Deprecation FAQ для получения дополнительных обновлений.