Мы продолжаем писать наш цикл. Первая и вторая части давно доступны на хабре. Если до сих пор не прочитали, то вперед. Эти знания помогут вам крепко держаться в седле. Для тех, кто в теме, напомним тезисы предыдущей статьи:
Мы рассмотрели структуру экспериментов: таблица конфигурации, таблица эксперимента, сам процесс тестирования
Описали хронологию появления проблем
Разобрали гипотезу о влиянии аппаратной части устройства на обработку 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 и 4 Результаты опроса по Гипотезам 3 и 4](https://habrastorage.org/getpro/habr/upload_files/c0d/e5f/3bb/c0de5f3bb38c32c60ba7cc2c439dfbb9.png)
Мнения разделились: респонденты, в основном, считают, что обе гипотезы подтвердятся.
Сегодня мы разберем несколько интересных примеров, которые расставят все по местам. Начинаем!
Проблема №3. Разные оболочки
Разные оболочки ОС. Обработка deep link отличалась на разных оболочках Android
Опишем условия, в которых воспроизводится проблема:
![Config X-1. Конфигурация One UI Config X-1. Конфигурация One UI](https://habrastorage.org/getpro/habr/upload_files/199/6b5/23b/1996b523bf8d027c0d75ad1a6f950b42.png)
![Config Y-1. Конфигурация Vanila Config Y-1. Конфигурация Vanila](https://habrastorage.org/getpro/habr/upload_files/2e3/149/8fa/2e31498fa6d64c105bfc0c16fbf77f21.png)
На обоих устройствах открываем Gmail, отправляем сами себе письмо с ссылкой domain1.domain2.ru/landing, получаем, открываем, кликаем по ней. А теперь внимание на экран:
![Config X-1. Переход в наше приложение — предлагается. Config X-1. Переход в наше приложение — предлагается.](https://habrastorage.org/getpro/habr/upload_files/711/964/85e/71196485e5022fea686a2724d35561bc.gif)
![Config Y-1. Переход в наше приложение — не предлагается (мы попали в браузер). Config Y-1. Переход в наше приложение — не предлагается (мы попали в браузер).](https://habrastorage.org/getpro/habr/upload_files/7ea/9b2/f1d/7ea9b2f1d50e6a0f755ea859e97dd866.gif)
В этот раз мы открываем одну и ту же ссылку, в одном и том же приложении. 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
![Результаты проверки гипотезы о влиянии оболочки Android ОС на стороннем приложении Gmail. Результаты проверки гипотезы о влиянии оболочки Android ОС на стороннем приложении Gmail.](https://habrastorage.org/getpro/habr/upload_files/a04/b04/e86/a04b04e86bc1b85c3caa87531512643e.png)
Все четыре оболочки показали одинаковый результат при попытке открыть диплинк через приложение Gmail. Но! Если проводить тесты на встроенном приложении (например, СМС-клиенте), то появляются различия:
![Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте. Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте.](https://habrastorage.org/getpro/habr/upload_files/288/905/683/288905683f8335cfa02f357e4307da13.png)
Давайте разбираться. One UI 3.1 в Messaging показала себя как и предыдущем сценарии.
![Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте на устройстве с оболочкой One UI 3.1 (Config 16). Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте на устройстве с оболочкой One UI 3.1 (Config 16).](https://habrastorage.org/getpro/habr/upload_files/335/4f6/4df/3354f64df783dad119633330666b0b8a.png)
EMUI 9.1.0 в аналогичном тесте сильно отличился:
![Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте на устройстве с оболочкой EMUI 9.1.0 (Config 15). Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте на устройстве с оболочкой EMUI 9.1.0 (Config 15).](https://habrastorage.org/getpro/habr/upload_files/6d9/251/00a/6d925100a51cfebc81cd4f614aceb393.png)
Почему так вышло? Дело в том, что приложения бывают сторонние (их можно скачать из маркета) и встроенные (предустановлены на смартфон). В этом и есть различие между Gmail (стороннее) и Messaging (встроенное).
Можно развить эту мысль и сказать, что оболочка напрямую влияет на то, какие встроенные приложения будут на устройстве. Ведь кто-то скажет: “СМС-клиент Samsung-а можно установить на Honor”. Да, но кто будет это делать? :) Более того, после его установки на Honor он все равно останется Samsung-овским. Поэтому:
Гипотеза 3. Разные оболочки ОС — ОПРОВЕРГНУТА.
Оболочка Android ОС НЕ ВЛИЯЕТ на работу Deep Link.
Проблема №4. Разные приложения
Разные приложения. Обработка deep link отличалась при переходу по ссылке из разных приложений.
Конфигурации в студию!
![Config X-2. Конфигурация Gmail Config X-2. Конфигурация Gmail](https://habrastorage.org/getpro/habr/upload_files/64d/883/07b/64d88307bd3f61fe52abd1b20823d844.png)
![Config Y-2. Конфигурация VK Config Y-2. Конфигурация VK](https://habrastorage.org/getpro/habr/upload_files/318/57f/2a6/31857f2a61a2c824bc08fa3d8a87db8c.png)
Из значимых параметров только приложение. В первом случае — Gmail, во втором — VK. А теперь найди одно отличие…
![Config X-2. Переход в наше приложение — предлагается. Config X-2. Переход в наше приложение — предлагается.](https://habrastorage.org/getpro/habr/upload_files/3b7/16a/d94/3b716ad940df36e8920e65dfe72391db.gif)
![Config Y-2. Переход в наше приложение — не предлагается (открывается встроенный браузер). Config Y-2. Переход в наше приложение — не предлагается (открывается встроенный браузер).](https://habrastorage.org/getpro/habr/upload_files/4f9/b6f/0c1/4f9b6f0c1ac1631da12253f61d47c3f6.gif)
Сформулируем гипотезу:
Гипотеза 4. Приложение.
Приложение, из которого открывается ссылка, влияет на работу Deep Link
Для проверки этой гипотезы будем пробовать открывать ссылки из различных приложений:
Messaging
Gmail
Поисковая строка Google
Telegram
WhatsApp
VK
VK Toasters
![Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка (Config 11). Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка (Config 11).](https://habrastorage.org/getpro/habr/upload_files/7ff/0a4/69b/7ff0a469b6ce1b4db67d356b6d98de1e.png)
Результаты отличаются. Копаем глубже. Для всех перечисленных приложений, кроме VK, результаты оказались следующими:
![Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка. Все, кроме VK (Config 11). Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка. Все, кроме VK (Config 11).](https://habrastorage.org/getpro/habr/upload_files/047/c0f/eba/047c0feba2ac1ebaa51c05855b2e0ff1.png)
А вот, что произошло в VK. Никакие ссылки ни для каких схем не были открыты в нашем приложении!
![Результаты проверки гипотезы о влиянии приложения (VK), из которого открывается ссылка (Config 11). Результаты проверки гипотезы о влиянии приложения (VK), из которого открывается ссылка (Config 11).](https://habrastorage.org/getpro/habr/upload_files/bc3/fdf/7e5/bc3fdf7e5f34cb1d5e329dc7d2a165bb.png)
Пробуем разобраться:
Q: Влияет ли приложение, из которого открывается ссылка, на обработку Deep Link?
A: Да, но поведение не всегда ожидаемое.
![Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка (VK, WhatsApp, Google Search соответственно). Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка (VK, WhatsApp, Google Search соответственно).](https://habrastorage.org/getpro/habr/upload_files/2ec/663/c6d/2ec663c6d1886b6b6e74fee3528d785b.gif)
Q: Что значит “не всегда ожидаемое”?
A: Некоторые приложения (например, VK и Telegram) отличаются наличием встроенного браузера (в VK и Telegram его можно отключить в настройках).
Но даже в приложениях со встроенными браузерами поведение отличается! Посмотрите на пример:
![Различия в обработке перехода по ссылке в VK (слева) и Telegram (справа). Различия в обработке перехода по ссылке в VK (слева) и Telegram (справа).](https://habrastorage.org/getpro/habr/upload_files/a84/8ed/310/a848ed310cb8f91e441a31972509ed4f.gif)
VK и Telegram имеют встроенные браузеры, которые пытаются перехватить переходы по ссылкам из приложения. Но сам факт наличия браузера не является определяющим. Поведение все равно может отличаться, и это отлично видно на скринкастах.
Более того! Обработка Deep Link может отличаться на разных версиях одного и того же приложения. Простой пример:
![Манифест приложения первой версии. Манифест приложения первой версии.](https://habrastorage.org/getpro/habr/upload_files/080/f8a/b11/080f8ab11c215b563ad06a5376f9694e.png)
![Обработка ссылок приложением первой версии. Обработка ссылок приложением первой версии.](https://habrastorage.org/getpro/habr/upload_files/57b/663/d9e/57b663d9eeba8053ab6f285e3474ca08.gif)
![Манифест приложения второй версии. https схема была удалена. Манифест приложения второй версии. https схема была удалена.](https://habrastorage.org/getpro/habr/upload_files/a3a/c26/51e/a3ac2651e05ff4966fca804fcf551ed7.png)
![Обработка ссылок приложением второй версии. Https-ссылка, очевидно, перестала обрабатываться. Обработка ссылок приложением второй версии. Https-ссылка, очевидно, перестала обрабатываться.](https://habrastorage.org/getpro/habr/upload_files/840/9fe/1c2/8409fe1c284249dac34caad2b45d96af.gif)
Мы разобрали несколько ярких примеров, которых более чем достаточно, чтобы сделать вывод:
Гипотеза 4. Приложение — ПОДТВЕРЖДЕНА.
Приложение, из которого открывается ссылка, ВЛИЯЕТ на работу Deep Link.
Резюме
Подведем итоги. Сегодня мы рассмотрели третью и четвертую из семи проблемы, с которыми столкнулись при решении исходной задачи.
Проблема третья: на устройствах с разными оболочками диплинк обрабатывается по-разному. Тут мы сошлись на том, что приложения бывают сторонними (устанавливаются нами из маркетов или сайтов) и встроенными (предустанавливаются разработчиками на смартфоны). Мы порой сами не замечаем, как пользуемся разными приложениями календаря, почты, СМС-клиентов… Они ведь так похожи по функционалу и несильно отличаются внешне, но все же они разные. И оболочка в большей степени этому способствует, но косвеенно.
Гипотеза 3. Разные оболочки ОС — ОПРОВЕРГНУТА.
Оболочка Android ОС НЕ ВЛИЯЕТ на работу Deep Link
Четвертая проблема заключалась в том, что приложения, из которых открывается ссылка, влияли на работу Deep Link. Эксперименты показали, насколько разной может быть обработка. Мы выяснили, что при тестировании приложений очень важно обращать внимание на наличие встроенного браузера, который может сильно повлиять на обработку. Вывод такой:
Гипотеза 4. Приложения — ПОДТВЕРЖДЕНА.
Приложение, из которого открывается ссылка, ВЛИЯЕТ на работу Deep Link.
Поздравляем! Ты трижды молодец! Три из пяти частей позади. В следующий раз мы разберем:
Ссылки без scheme. Ссылки вида host/path обрабатывались по-разному
Второй host. Мы забыли о том, что у нас есть второй домен
Перехват всех ссылок. В один момент приложение начало перехватывать все ссылки с нашим доменом (даже те, для которых у нас не было сценариев обработки)
А пока поделись своими впечатлениями в комментариях. Может сталкивался с чем-то подобным? Любой опыт экстремально важен (за ним мы здесь и собрались :)) До связи!
Также подписывайтесь на наш телеграм-канал «Голос Технократии». Каждое утро мы публикуем новостной дайджест из мира ИТ, а по вечерам делимся интересными и полезными мастридами.