Разработка и тестирование мобильных дип линков (mobile deep links) |
05.07.2018 13:35 |
Автор: Диана Пинчук, QA Engineer, Getsocial.im Мобильные дип линки (mobile deep links) все чаще используются во многих мобильных приложениях, но до сих пор многие разработчики и тестировщики сталкиваются с различными проблемами при их разработке и интеграции. Мы в GetSocial более 4 лет разрабатываем свое deep links решение. За это время мы столкнулись со множеством изменений в мобильной экосистеме, включая изменения в ОС, браузерах и стандартах самих дип линков. В этой статье описаны самые распространенные проблемы при работе с дип линками, а также советы по их тестированию. Но для начала короткое напоминание, что они из себя представляют. Дип линкинг (deep linking) позволяет конечному пользователю открыть страницу с нужным контентом внутри мобильного приложения, минуя его домашнюю страницу и минимизируя трату времени на поиск необходимого контента. В случае, если приложение не установлено на девайсе, отложенный дип линкинг (deferred deep linking) позволяет пользователю открыть нужную страницу внутри мобильного приложения даже после его установки. Контекстный дип линкинг (contextual deep linking) дает дополнительную возможность сохранения информации (например, о промо кампании) во время всего сценария установки приложения. Пример contextual deep linking: кастомная информация сохранена в виде key-value пар и доступна после установки приложения, что позволило кастомизировать стартовую страницу приложения для получателя линка. Источник Преимущества дип линковКроме помощи в навигации мобильных приложений, дип линки имеют еще ряд преимуществ:
Проблемы, с которыми сталкиваются разработчики и тестировщикиПоддержка различных технологий работы с дип линкамиЧто делать со всем зоопарком на картинке выше? Возможно, придется поддерживать все перечисленные технологии. Или же вам повезло и не нужно поддерживать старые версии iOS (до 9) и Android (до 6), что уменьшает список поддерживаемых стандартов (можно не настраивать URI Schemes). Из хорошего: обновления iOS Universal Links и Android App Links выходят не так часто, и настроив их однажды можно надеяться на более-менее стабильную работу следующие несколько месяцев. Разработка линков, которые будут работать во всех мобильных браузерахРабота с iOS в этом плане проще: большинство приложений использует Safari или его view. Если iOS Universal Links работают в одном из приложений с таким view (например, нативный Email клиент), скорее всего они будут работать и в других подобных приложениях (Whatsapp). Приложение Gmail для iOS использует Chrome, так что не забудьте проверить и его рендеринг.
Интеграция с соц.сетями и мессенджерамиМножество браузеров + множество мессенджеров => ад фрагментации и очень много зависимости от сторонних приложений. Для лучшего пользовательского опыта и высоких показателей конверсии необходимо поддерживать хотя бы самые используемые приложения, согласно статистике распределения по странам. Распределение популярности мессенджеров по странам, источник Встроенные браузеры (in-app browsers)У приложений вроде Kakao и FB Messenger есть свои встроенные браузеры, которые позволяют удерживать пользователей внутри данных приложений при просмотре стороннего контента. Больше браузеров => больше user agents, требующих поддержки. У некоторых приложений реализация web view ломает работу iOS Universal Links. Мы пытаемся обрабатывать такие ситуации отслеживанием кликов при помощи user agent или HTTP referrer, но иногда и это не помогает. Например, на момент написания статьи мы точно знаем, что дип линк навигация не сработает с iOS Telegram, всегда открывается App Store вместо приложения. Некоторые сторонние не могут открыть ваше приложение напрямую. Для таких случаев мы показываем кастомизированную лендинг страницу приложения. Чем больше платформ/браузеров/мессенджеров вы поддерживаете, тем больше крайних случаев могут обнаружится. В этой таблице вы можете ознакомиться с покрытием сторонних приложений, в которых мы протестировали основные сценарии. Мобильная лендинг страница, которая будет показана пользователю в случае, если дип линг не может открыть ваше приложение напрямую Отслеживание атрибуции (attribution)Как отследить, откуда именно пользователи установили ваше приложение - по клику на нужный линк или просто случайно наткнулись в магазине приложений? В Android специально для этого есть специальный атрибут - Google Play INSTALL_REFERRER, который надежно срабатывает в большинстве случаев. В iOS, к сожалению, нет ничего подобного на данный момент. Чтобы решить эту проблему мы используем цифровой отпечаток устройства (fingerprinting). Это не идеальное решение, но одно из самых надежных на сегодня: сначала отпечаток формируется при клике на линк, потом - при первом использовании приложения. Если отпечатки совпали внутри специально обозначенных временных рамок (т.н. attribution window), установка приложения считается действительной. Если пользователь кликнул на ссылку на десктопе, он откроет лендинг страницу, с которой можно отправить SMS себе на девайс, либо сгенерировать QR code, чтобы отсканировать с девайса. Таким образом удается сохранить возможность отследить, с какой конкретной ссылки пользователь установил приложение Предотвращение мошенничестваМошенничество с установкой приложений стало серьезной проблемой довольно давно, и новые уязвимости появляются также быстро, как и способы борьбы с ними. Разработчики и провайдеры deep links решений должны уметь отслеживать и предупреждать не только довольно безобидные случаи мошенничества вроде переустановки приложения с одного устройства (чтобы получить больше наград), но и более “продвинутые” виды мошенничества вроде click injections. Для того, чтобы больше узнать об этой теме, советуем ознакомиться с отчетом компании Appsflyer The State of Mobile Fraud: Q1 2018. Для борьбы с мошенничеством при установке приложений используйте Google Play Referrer API в Android и Apple install validation в iOS. Некоторые end-to-end сценарии очень тяжело (или невозможно) автоматизироватьДля автоматизации мобильного тестирования мы используем Appium. Нам пришлось столкнуться с несколькими проблемами при попытке автоматизировать проверки работы дип линков:
Поэтому помимо автоматизированных тестов мы довольно много тестируем вручную, чтобы покрыть как можно больше сценариев и знать, что поддерживаемые нами провайдеры работают так, как ожидается. Постоянная поддержкаПостоянная поддержка своего продукта является огромной проблемой для каждого мобильного разработчика. Мобильная экосистема меняется очень быстро и нельзя надеяться, что один раз настроенная фича будет работать после обновлений ОС, движка браузера, API либо стороннего приложения. Что с этим делать? Надо постоянно быть в курсе всех новостей и обновлений¯\_(ツ)_/¯ Полезные инструменты
Часть нашей внутренней таблицы решений для iOS Universal links в предыдущей версии GetSocial SDK Ключевые аспекты, на которые стоит обратить внимание прежде, чем начнете разработку своего deep links решения:
Основные пункты статьи взяты с книги GetSocial build vs buy и личного опыта, который послужил основой презентации и выступления на конференции ITEM 2018 в Киеве. |