Android: Как тестовые платформы A/B модифицируют активы "на лету"?

Я пытался выяснить, как A/B тестирование SDK заменяет активы при отправке с сервера, просто включив одну строку кода. Я знаю, что это может быть сделано путем подкласса различных элементов пользовательского интерфейса, но для этого потребуется большая модификация кода.

Ответ 1

Я ведущий разработчик Android в Taplytics. Мы делаем именно то, о чем вы говорите!

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

Прежде всего, если вы являетесь одним из этих тестов A/B, я определенно рекомендую вам подклассировать элементы пользовательского интерфейса. Это намного быстрее, чем другие решения, потому что его код работает, когда вы хотите его (я объясню это позже). Самый простой способ - подкласс View и работать оттуда.

Технология тестирования A/B те же, что и практически любая информация, которую вы получаете с сервера и представляете пользователю. Там нет никакой разницы.

Теперь, чтобы ответить на ваш комментарий "одной строки кода", ну, там секретный соус. В iOS этим разработчикам повезло, что метод swizzling, в котором они могут буквально видеть, когда метод вызывается и заменяет его своими вещами, Это делает вещи относительно легкими!

Но для Android? Ну, нет такой удачи. Взгляните на входные параметры для каждой платформы тестирования A/B/Analytics на Android: Foo.start(AppContext, "apiKey");

Магия в AppContext. Appcontext - это, по сути, интерфейс для самого Android. Это то, что делает его Android, а не просто Java. В AppContext есть информация обо всем: какие действия выполняются, когда они работают, какие намерения передаются, почти все. С помощью AppContext у вас есть много контроля и информации о приложении.

Оттуда вы в основном создаете дерево AppContext. Каждый маленький бит информации, который вам нужен из приложения, просто отделяет AppContext. AppContext → Деятельность → Просмотры. AppContext → Activites → Views → Fragments → Fragment Views. AppContext → Услуги → Push. Mixpanel на самом деле называет это "ViewCrawling" в своем решении, что может дать вам лучшую визуальную визуализацию происходящего.

Вы просто создаете это большое дерево обмотки с ветвями, входящими в каждый маленький аспект приложения, поэтому, когда вы хотите что-то изменить, вы можете найти его в своем дереве! Как только вы есть то, что вы хотите, вы просто захватываете информацию с сервера (или локального кеша), будь то JSON или XML или что-то еще, и внесите необходимые изменения на основе этой информации.

Но, как я уже говорил, используйте свои собственные элементы пользовательского интерфейса. Вам гораздо проще определить, что нужно изменить, прежде чем рисовать элемент. Особенно, если вы используете подкласс View, вам не нужно много кода вообще. Однострочная установка - это чистое удобство и делает все для меня (SDK dev) намного сложнее. Но я не могу пойти и попросить людей изменить каждый вид в своем приложении, чтобы быть подклассом моих собственных вещей, не так ли?

Так оно и есть. Для этого требуется интенсивное знание Android SDK, чтобы он мог ползать по всем его аспектам по мере необходимости. Идея проста, но более глубокие казни становятся невероятно сложными.

Я открыт для любых вопросов! Это реальный общий обзор всего этого, и он становится более сложным, поэтому попросите прочь.

Ответ 2

На самом деле, мой опыт тестирования A/B заключался в использовании Диспетчера тегов Google, который помогает мне управлять "динамическим пакетом". Имея этот пакет внутри моего приложения, я раздуваю макеты, раскрашиваю элементы и так в соответствии со значениями, предоставленными этим пакетом. Взгляните на GTM docs, и я уверен, что вы найдете что-то полезное.

Ответ 3

В качестве примера компания Leanplum предлагает редактор визуальных интерфейсов для iOS и Android: это не требует кодирования, и Leanplum автоматически обнаружит элементы и позволит вам их изменить. Не требуется повторная отправка инженеров или приложений.

Я инженер в Leanplum; поэтому позвольте мне дать вам немного больше информации об этом:

  • При установке iOS или Android SDK в вашем приложении вы включаете функцию, называемую Visual Editor. В режиме разработки и открытии панели управления сайтом SDK отправляет информацию о иерархии представлений в реальном времени в ваш браузер. Иерархия представления сканируется аналогичным образом, когда DOM создается на обычном веб-сайте.
  • Вы можете выбрать любой элемент пользовательского интерфейса в своем приложении и изменить его внешний вид в режиме реального времени. Это работает путем определения точного элемента в дереве просмотра и отправки изменений в SDK.
  • Это может быть достигнуто путем добавления пользовательских крючков или техники под названием "swizzling". Взгляните на это сообщение в блоге, как оно работает.

Чтобы узнать больше о редакторе визуальных интерфейсов Leanplum, просмотрите leanplum.com. Они предлагают бесплатную 30-дневную пробную версию.