Мы продолжаем писать наш цикл. Первая и вторая части давно доступны на хабре. Если до сих пор не прочитали, то вперед. Эти знания помогут вам крепко держаться в седле. Для тех, кто в теме, напомним тезисы предыдущей статьи:

  • Мы рассмотрели структуру экспериментов: таблица конфигурации, таблица эксперимента, сам процесс тестирования

  • Описали хронологию появления проблем

  • Разобрали гипотезу о влиянии аппаратной части устройства на обработку deep link

Гипотеза 1. Разные устройства — ОПРОВЕРГНУТА. Устройство (аппаратная часть) НЕ ВЛИЯЕТ на работу Deep Link.

  • Подробно рассмотрели, как версия Android ОС влияет на обработку deep link

Гипотеза 2. Разные версии Android – ОПРОВЕРГНУТА. 

Версия Android OС НЕ ВЛИЯЕТ на работу Deep Link.

Сегодня мы будем разбирать еще две проблемы, связанные с оболочками ОС и приложением, из которого открывается deeplink.

Содержание

  1. Введение

  2. Проблема №3. Разные оболочки

  3. Проблема №4. Разные приложения

  4. Резюме

В конце предыдущей статьи мы сформулировали 3 и 4 гипотезы:

Гипотеза 3. Разные оболочки ОС. 

Оболочка Android ОС влияет на работу Deep Link.

Гипотеза 4. Приложение. 

Приложение, из которого открывается ссылка, влияет на работу Deep Link.

Давайте посмотрим на ваши догадки относительно их результатов

Результаты опроса по Гипотезам 3 и 4

Мнения разделились: респонденты, в основном, считают, что обе гипотезы подтвердятся.

Сегодня мы разберем несколько интересных примеров, которые расставят все по местам. Начинаем!

Проблема №3. Разные оболочки

Разные оболочки ОС. Обработка deep link отличалась на разных оболочках Android

Опишем условия, в которых воспроизводится проблема:

Config X-1. Конфигурация One UI
Config Y-1. Конфигурация Vanila

На обоих устройствах открываем Gmail, отправляем сами себе письмо с ссылкой domain1.domain2.ru/landing, получаем, открываем, кликаем по ней. А теперь внимание на экран:

Config X-1. Переход в наше приложение — предлагается.
Config Y-1. Переход в наше приложение — не предлагается (мы попали в браузер).

В этот раз мы открываем одну и ту же ссылку, в одном и том же приложении. 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.

Все четыре оболочки показали одинаковый результат при попытке открыть диплинк через приложение Gmail. Но! Если проводить тесты на встроенном приложении (например, СМС-клиенте), то появляются различия:

Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте.

Давайте разбираться. One UI 3.1 в Messaging показала себя как и предыдущем сценарии.

Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте на устройстве с оболочкой One UI 3.1 (Config 16).

EMUI 9.1.0 в аналогичном тесте сильно отличился:

Результаты проверки гипотезы о влиянии оболочки Android ОС на встроенном СМС-клиенте на устройстве с оболочкой EMUI 9.1.0 (Config 15).

Почему так вышло? Дело в том, что приложения бывают сторонние (их можно скачать из маркета) и встроенные (предустановлены на смартфон). В этом и есть различие между Gmail (стороннее) и Messaging (встроенное). 

Можно развить эту мысль и сказать, что оболочка напрямую влияет на то, какие встроенные приложения будут на устройстве. Ведь кто-то скажет: “СМС-клиент Samsung-а можно установить на Honor”. Да, но кто будет это делать? :) Более того, после его установки на Honor он все равно останется Samsung-овским. Поэтому:

Гипотеза 3. Разные оболочки ОС — ОПРОВЕРГНУТА. 

Оболочка Android ОС НЕ ВЛИЯЕТ на работу Deep Link.

Проблема №4. Разные приложения

Разные приложения. Обработка deep link отличалась при переходу по ссылке из разных приложений. 

Конфигурации в студию!

Config X-2. Конфигурация Gmail
Config Y-2. Конфигурация VK

Из значимых параметров только приложение. В первом случае — Gmail, во втором — VK. А теперь найди одно отличие…

Config X-2. Переход в наше приложение — предлагается.
Config Y-2. Переход в наше приложение — не предлагается (открывается встроенный браузер).

Сформулируем гипотезу:

Гипотеза 4. Приложение. 

Приложение, из которого открывается ссылка, влияет на работу Deep Link

Для проверки этой гипотезы будем пробовать открывать ссылки из различных приложений: 

  • Messaging

  • Gmail

  • Поисковая строка Google

  • Telegram

  • WhatsApp

  • VK

  • VK Toasters

Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка (Config 11).

Результаты отличаются. Копаем глубже. Для всех перечисленных приложений, кроме VK, результаты оказались следующими:

Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка. Все, кроме VK (Config 11).

А вот, что произошло в VK. Никакие ссылки ни для каких схем не были открыты в нашем приложении!

Результаты проверки гипотезы о влиянии приложения (VK), из которого открывается ссылка (Config 11).

Пробуем разобраться:

Q: Влияет ли приложение, из которого открывается ссылка, на обработку Deep Link?

A: Да, но поведение не всегда ожидаемое.

Результаты проверки гипотезы о влиянии приложения, из которого открывается ссылка (VK, WhatsApp, Google Search соответственно).

Q: Что значит “не всегда ожидаемое”?

A: Некоторые приложения (например, VK и Telegram) отличаются наличием встроенного браузера (в VK и Telegram его можно отключить в настройках).

Но даже в приложениях со встроенными браузерами поведение отличается! Посмотрите на пример:

Различия в обработке перехода по ссылке в VK (слева) и Telegram (справа).

VK и Telegram имеют встроенные браузеры, которые пытаются перехватить переходы по ссылкам из приложения. Но сам факт наличия браузера не является определяющим. Поведение все равно может отличаться, и это отлично видно на скринкастах.

Более того! Обработка Deep Link может отличаться на разных версиях одного и того же приложения. Простой пример:

Манифест приложения первой версии.
Обработка ссылок приложением первой версии.
Манифест приложения второй версии. https схема была удалена.
Обработка ссылок приложением второй версии. Https-ссылка, очевидно, перестала обрабатываться.

Мы разобрали несколько ярких примеров, которых более чем достаточно, чтобы сделать вывод:

Гипотеза 4. Приложение — ПОДТВЕРЖДЕНА.

Приложение, из которого открывается ссылка, ВЛИЯЕТ на работу Deep Link.

Резюме

Подведем итоги. Сегодня мы рассмотрели третью и четвертую из семи проблемы, с которыми столкнулись при решении исходной задачи. 

Проблема третья: на устройствах с разными оболочками диплинк обрабатывается по-разному. Тут мы сошлись на том, что приложения бывают сторонними (устанавливаются нами из маркетов или сайтов) и встроенными (предустанавливаются разработчиками на смартфоны). Мы порой сами не замечаем, как пользуемся разными приложениями календаря, почты, СМС-клиентов… Они ведь так похожи по функционалу и несильно отличаются внешне, но все же они разные. И оболочка в большей степени этому способствует, но косвеенно.

Гипотеза 3. Разные оболочки ОС — ОПРОВЕРГНУТА. 

Оболочка Android ОС НЕ ВЛИЯЕТ на работу Deep Link

Четвертая проблема заключалась в том, что приложения, из которых открывается ссылка, влияли на работу Deep Link. Эксперименты показали, насколько разной может быть обработка. Мы выяснили, что при тестировании приложений очень важно обращать внимание на наличие встроенного браузера, который может сильно повлиять на обработку. Вывод такой:

Гипотеза 4. Приложения — ПОДТВЕРЖДЕНА. 

Приложение, из которого открывается ссылка, ВЛИЯЕТ на работу Deep Link.

Поздравляем! Ты трижды молодец! Три из пяти частей позади. В следующий раз мы разберем:

  • Ссылки без scheme. Ссылки вида host/path обрабатывались по-разному

  • Второй host. Мы забыли о том, что у нас есть второй домен

  • Перехват всех ссылок. В один момент приложение начало перехватывать все ссылки с нашим доменом (даже те, для которых у нас не было сценариев обработки)

А пока поделись своими впечатлениями в комментариях. Может сталкивался с чем-то подобным? Любой опыт экстремально важен (за ним мы здесь и собрались :)) До связи!

Валера Петров

Android-разработчик. TG: @valeryvpetrov

Ангелина Евсикова

Android-разработчица Технократии. TG: @Angelina_dev


Также подписывайтесь на наш телеграм-канал «Голос Технократии». Каждое утро мы публикуем новостной дайджест из мира ИТ, а по вечерам делимся интересными и полезными мастридами.