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

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

Solutions Collecting From Web of "Android: Как тестовые платформы A / B модифицируют активы «на лету»?"

Я ведущий разработчик 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) намного сложнее. Но я не могу пойти и попросить людей изменить каждый вид в своем приложении, чтобы быть подклассом моих собственных вещей, не так ли?

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

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

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

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

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

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

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