Введение в диплинки (deeplinks)
Deep-ссылки представляют собой механизм перенаправления пользователей к конкретному контенту. Цель deep-ссылок - обеспечить удобный доступ пользователей к контенту приложения. Они играют важную роль в улучшении пользовательского опыта и предотвращении потери пользователей.
Для лучшего понимания того, что такое deep-ссылки, давайте рассмотрим пример с использованием приложения Droidfood. Это приложение позволяет пользователям заказывать еду и иллюстрирует использование deep-ссылок на практике.
Что такое ссылка?
Существует множество определений понятия "ссылка". В нашем контексте, мы можем сформулировать следующее: "Ссылка - это последовательность символов, которая определяет адрес или путь к ресурсу в сети Интернет".
Например, ссылка, которая ведет на раздел веб-сайта приложения Droidfood, может быть представлена следующим образом:
1) Scheme. В данном случае "https:", определяющую тип ссылки, которая здесь является частью безопасного протокола передачи гипертекста.
2) Authority и имя хоста, в данном случае "droidfood.example.com", указывающие основное место, или домен, к которому ведет ссылка. Он выражен иерархически, от домена верхнего уровня до поддоменов.
3) Path в данном случае "/locations", представляющий собой расположение ресурса на указанном авторитете или домене.
Для ответа на этот вопрос расширим наше предыдущее определение:
"Ссылка - это последовательность символов, перенаправляющая к определенному ресурсу, который может быть как приложением Android, так и другим ресурсом в сети Интернет."
Любая ссылка, ведущая в приложение Android, может быть считаться глубокой ссылкой. Существуют различные типы глубоких ссылок, каждый из которых представляет собой особый случай другого типа, как показано на диаграмме:
Deeplink
Deeplink обладают наименее строгими правилами создания. Приведем два примера таких ссылок из приложения Droidfood. Первая ссылка перенаправляет пользователей к списку расположений, а вторая - к ресторанам, находящимся неподалеку от пользователя:
https://droidfood.example.com/locations
droidfood://near-me
Основные правила для создания глубоких ссылок следующие:
- Scheme может быть стандартным (например, https, mail, sms) или пользовательской.
- Authority должен быть структурой домена для удобства идентификации.
- Path может использоваться для передачи параметров в приложение и направления пользователей на определенный экран.
Пользовательская схема для диплинков позволяет пользователям эффективно получать доступ к внутреннему контенту приложения. Однако глубокие ссылки не имеют централизованного реестра владельцев, поэтому любое приложение может зарегистрироваться для обработки определенной глубокой ссылки. Когда Android обнаруживает несколько приложений, зарегистрированных для обработки ссылки, появляется диалоговое окно выбора приложения для запуска.
До Android 12 диалоговое окно выбора появлялось, если:
- Приложение определяет
Android App Link
, но ссылка не может быть проверена. - После обновления приложения отменяется запрос пользователя о "всегда открывать".
Существуют схемы для запуска действий в приложении через Android, такие как:
- "tel" для телефонных звонков
- "file" для музыки или видео
- "mailto" для отправки электронной почты
- "geo" для карт
- "sms" для текстовых сообщений
В приложении Droidfood есть три активности: LocationsActivity
, DeliveryOptionsActivity
и AboutUsActivity
. Все они функционируют одинаково. Например, для перехода к активности LocationsActivity
можно использовать следующую глубокую ссылку: droidfood://locations
.
Web-ссылки
Эти ссылки наследуют все характеристики диплинков, но следуют более конкретным синтаксическим правилам. Веб-ссылки выглядят так же, как и любая другая ссылка в интернете. Вот пример ссылки для приложения Droidfood:
https://droidfood.example.com/about-us
Эта ссылка перенаправляет пользователей на страницу, где описана миссия и история Droidfood.
Для корректной обработки веб-ссылки системой необходимо настроить следующее:
scheme
должен бытьhttp
илиhttps
.authority
- это имя вашего веб-хоста и должен быть доступен в интернете.Path
опционален и зависит от того, как вы настроили ваш веб-сайт.
Начиная с Android 12, все веб-ссылки открываются в браузере, если не было настроено сопоставление между вашим веб-сайтом и приложением Android. Это сопоставление является основой для Android App Links.
Начиная с Android 12, все веб-ссылки, не ассоциированные с вашим приложением Android, открываются в браузере. Если есть связь между веб-ссылкой и приложением Android, и приложение установлено, то ссылка открывается в приложении. Если приложение не установлено, ссылка открывается в браузере. В предыдущих версиях Android может появиться диалоговое окно выбора, если для веб-ссылки есть несколько обработчиков, таких как другие браузеры или приложения.
Android App Links
Это самый специализированный тип диплинка, который требует наиболее строгих правил. Android App Links - это веб-ссылки, для которых необходимо выполнить дополнительные настройки. Этот процесс подтверждает владение ссылкой. При переходе пользователя по Android App Link, который прошел проверку, он всегда открывается в вашем приложении, и диалоговое окно выбора не появляется.
Таким образом, после проверки https://droidfood.example.com/locations
всегда открывается в приложении Droidfood и отображает расположения ресторанов.
Правила создания Android App Link следующие:
- Scheme, как и у веб-ссылок, должна быть
http
илиhttps
. - Authority и Path, аналогичные указанным для веб-ссылок, должны соответствовать имени вашего веб-хоста и быть доступными в сети интернет.
Эта дополнительная конфигурация включает в себя:
- Установку атрибута "
autoVerify
" в значение true вintent filter
вашего приложения, что делает его приоритетным обработчиком определенного типа ссылок. - Объявление ассоциации между страницей на вашем веб-сайте и вашим приложением Android. Это достигается с помощью JSON-файла "
assetlinks.json
", который должен быть доступен через каталог "well-known
" в корневом каталоге вашего веб-сайта.
Кроме того, следует обеспечить, чтобы ваш веб-сайт реагировал на ссылку, чтобы пользователи без вашего приложения попадали на нужную страницу.
Зачем использовать Android App Link
по сравнению с другими типами ссылок? Рассмотрим несколько ситуаций, когда они могут быть полезны.
Возможность поделиться ссылкой
Рассмотрим сценарий распространения ссылок. Допустим, вы хотите пригласить друга на обед, и ему интересно меню выбранного вами ресторана. С использованием Android App Link
вы отправляете ссылку Droidfood. Если у друга установлено приложение, он переходит к меню в приложении; в противном случае он попадает на веб-сайт Droidfood.
Этот сценарий типичен для всех Android App Links
и предоставляет лучший пользовательский опыт.
Предположим, приложение Droidfood хочет поделиться купоном на скидку 15% на ужин из доставки. Для этого Droidfood отправляет ссылку своим клиентам, чтобы приложение автоматически применяло купон при оформлении заказа.
Ссылка может иметь следующий вид:
https://droidfood.example.com/delivery?code=15off
В диплинках парамтры могут передаваться в ссылке. Каждый раз, когда пользователь нажимает на ссылку, он перенаправляется в приложение Droidfood. Логика Droidfood получает параметр code
и может применить его к оформлению заказа.
- Проверка диплинков приложений Android до 12 версии: если у вас есть ссылка, которая не прошла проверку, для всех ссылок появляется диалоговое окно выбора. Это означает, что другие приложения могут добавить эти ссылки в свой манифест, оставляя ваших пользователей под угрозой.
Например, предположим, что https://droidfood.example.com не прошла проверку. Тогда злонамеренное приложение может добавить эту ссылку в манифест, и пользователь может увидеть оба приложения в диалоговом окне выбора.
Важные моменты
- Будьте внимательны при генерации ссылок с критичной информацией. Если требуется включить такую информацию в URL, рекомендуется использовать серверно-генерируемые непрозрачные токены, которые могут быть аннулированы по мере устаревания. Пример:
https://droidfood.example.com/login?token=tDsZE6rk1cwFPVDTCqkGbA
- Пользователи могут изменять поведение обработки ссылок на своих устройствах, что означает, что ссылки могут быть перехвачены другими приложениями или браузерами. Люди также могут копировать и вставлять ссылки в любое место. Проектируйте свои диплинки с учетом этого. Ссылки, которые вы хотите открывать в вашем приложении Android, все равно могут открываться в браузере или другом приложении, выбранном пользователем.
Это вольный перевод оригинального материала