Deep Dive Into Deep Link. Часть 3. Оболочка ОС, приложение
Мы продолжаем писать наш цикл. Первая и вторая части давно доступны на хабре. Если до сих пор не прочитали, то вперед. Эти знания помогут вам крепко держаться в седле. Для тех, кто в теме, напомним тезисы предыдущей статьи:
Мы рассмотрели структуру экспериментов: таблица конфигурации, таблица эксперимента, сам процесс тестирования
Описали хронологию появления проблем
Разобрали гипотезу о влиянии аппаратной части устройства на обработку deep link
Гипотеза 1. Разные устройства — ОПРОВЕРГНУТА. Устройство (аппаратная часть) НЕ ВЛИЯЕТ на работу Deep Link.
Подробно рассмотрели, как версия Android ОС влияет на обработку deep link
Гипотеза 2. Разные версии Android – ОПРОВЕРГНУТА.
Версия Android OС НЕ ВЛИЯЕТ на работу Deep Link.
Сегодня мы будем разбирать еще две проблемы, связанные с оболочками ОС и приложением, из которого открывается deeplink.
Содержание
В конце предыдущей статьи мы сформулировали 3 и 4 гипотезы:
Гипотеза 3. Разные оболочки ОС.
Оболочка Android ОС влияет на работу Deep Link.
Гипотеза 4. Приложение.
Приложение, из которого открывается ссылка, влияет на работу Deep Link.
Давайте посмотрим на ваши догадки относительно их результатов
Мнения разделились: респонденты, в основном, считают, что обе гипотезы подтвердятся.
Сегодня мы разберем несколько интересных примеров, которые расставят все по местам. Начинаем!
Проблема №3. Разные оболочки
Разные оболочки ОС. Обработка deep link отличалась на разных оболочках Android
Опишем условия, в которых воспроизводится проблема:
На обоих устройствах открываем Gmail, отправляем сами себе письмо с ссылкой domain1.domain2.ru/landing, получаем, открываем, кликаем по ней. А теперь внимание на экран:
В этот раз мы открываем одну и ту же ссылку, в одном и том же приложении. One UI смогла перейти в наше приложение, Vanila — нет. Сформулируем гипотезу:
Гипотеза 3. Разные оболочки ОС.
Оболочка Android ОС влияет на работу Deep Link.
Для ее проверки мы выбрали стороннее приложение Gmail и оболочки:
One UI 2.5, One UI 3.1
Samsung Experience 9.0
EMUI 9.1.0
Vanila
Все четыре оболочки показали одинаковый результат при попытке открыть диплинк через приложение Gmail. Но! Если проводить тесты на встроенном приложении (например, СМС-клиенте), то появляются различия:
Давайте разбираться. One UI 3.1 в Messaging показала себя как и предыдущем сценарии.
EMUI 9.1.0 в аналогичном тесте сильно отличился:
Почему так вышло? Дело в том, что приложения бывают сторонние (их можно скачать из маркета) и встроенные (предустановлены на смартфон). В этом и есть различие между Gmail (стороннее) и Messaging (встроенное).
Можно развить эту мысль и сказать, что оболочка напрямую влияет на то, какие встроенные приложения будут на устройстве. Ведь кто-то скажет: “СМС-клиент Samsung-а можно установить на Honor”. Да, но кто будет это делать? :) Более того, после его установки на Honor он все равно останется Samsung-овским. Поэтому:
Гипотеза 3. Разные оболочки ОС — ОПРОВЕРГНУТА.
Оболочка Android ОС НЕ ВЛИЯЕТ на работу Deep Link.
Проблема №4. Разные приложения
Разные приложения. Обработка deep link отличалась при переходу по ссылке из разных приложений.
Конфигурации в студию!
Из значимых параметров только приложение. В первом случае — Gmail, во втором — VK. А теперь найди одно отличие…
Сформулируем гипотезу:
Гипотеза 4. Приложение.
Приложение, из которого открывается ссылка, влияет на работу Deep Link
Для проверки этой гипотезы будем пробовать открывать ссылки из различных приложений:
Messaging
Gmail
Поисковая строка Google
Telegram
WhatsApp
VK
VK Toasters
Результаты отличаются. Копаем глубже. Для всех перечисленных приложений, кроме VK, результаты оказались следующими:
А вот, что произошло в VK. Никакие ссылки ни для каких схем не были открыты в нашем приложении!
Пробуем разобраться:
Q: Влияет ли приложение, из которого открывается ссылка, на обработку Deep Link?
A: Да, но поведение не всегда ожидаемое.
Q: Что значит “не всегда ожидаемое”?
A: Некоторые приложения (например, VK и Telegram) отличаются наличием встроенного браузера (в VK и Telegram его можно отключить в настройках).
Но даже в приложениях со встроенными браузерами поведение отличается! Посмотрите на пример:
VK и Telegram имеют встроенные браузеры, которые пытаются перехватить переходы по ссылкам из приложения. Но сам факт наличия браузера не является определяющим. Поведение все равно может отличаться, и это отлично видно на скринкастах.
Более того! Обработка Deep Link может отличаться на разных версиях одного и того же приложения. Простой пример:
Мы разобрали несколько ярких примеров, которых более чем достаточно, чтобы сделать вывод:
Гипотеза 4. Приложение — ПОДТВЕРЖДЕНА.
Приложение, из которого открывается ссылка, ВЛИЯЕТ на работу Deep Link.
Резюме
Подведем итоги. Сегодня мы рассмотрели третью и четвертую из семи проблемы, с которыми столкнулись при решении исходной задачи.
Проблема третья: на устройствах с разными оболочками диплинк обрабатывается по-разному. Тут мы сошлись на том, что приложения бывают сторонними (устанавливаются нами из маркетов или сайтов) и встроенными (предустанавливаются разработчиками на смартфоны). Мы порой сами не замечаем, как пользуемся разными приложениями календаря, почты, СМС-клиентов… Они ведь так похожи по функционалу и несильно отличаются внешне, но все же они разные. И оболочка в большей степени этому способствует, но косвеенно.
Гипотеза 3. Разные оболочки ОС — ОПРОВЕРГНУТА.
Оболочка Android ОС НЕ ВЛИЯЕТ на работу Deep Link
Четвертая проблема заключалась в том, что приложения, из которых открывается ссылка, влияли на работу Deep Link. Эксперименты показали, насколько разной может быть обработка. Мы выяснили, что при тестировании приложений очень важно обращать внимание на наличие встроенного браузера, который может сильно повлиять на обработку. Вывод такой:
Гипотеза 4. Приложения — ПОДТВЕРЖДЕНА.
Приложение, из которого открывается ссылка, ВЛИЯЕТ на работу Deep Link.
Поздравляем! Ты трижды молодец! Три из пяти частей позади. В следующий раз мы разберем:
Ссылки без scheme. Ссылки вида host/path обрабатывались по-разному
Второй host. Мы забыли о том, что у нас есть второй домен
Перехват всех ссылок. В один момент приложение начало перехватывать все ссылки с нашим доменом (даже те, для которых у нас не было сценариев обработки)
А пока поделись своими впечатлениями в комментариях. Может сталкивался с чем-то подобным? Любой опыт экстремально важен (за ним мы здесь и собрались :)) До связи!
Валера Петров
Android-разработчик. TG: @valeryvpetrov
Ангелина Евсикова
Android-разработчица Технократии. TG: @Angelina_dev
Также подписывайтесь на наш телеграм-канал «Голос Технократии». Каждое утро мы публикуем новостной дайджест из мира ИТ, а по вечерам делимся интересными и полезными мастридами.