Android: ¿Cómo las plataformas de prueba A / B modifican los activos sobre la marcha?

Yo estaba tratando de averiguar cómo A / B pruebas SDK reemplazar los activos cuando se envía desde el servidor mediante la inclusión de una sola línea de código. Sé que esto se puede hacer subclase de varios elementos de la interfaz de usuario, pero eso requerirá una gran cantidad de modificación de código.

Soy el ingeniero principal de Android en Taplytics . Hacemos exactamente lo que estás hablando!

En el núcleo, es realmente bastante sencillo. Obviamente no puedo entrar en detalles completos sobre qué magia estamos haciendo, ¡pero puedo darle una idea general!

Primero apagado, si usted es el uno que construye estas pruebas de A / B, recomiendo definitivamente usted subclase sus elementos de la interfaz de usuario. Hacer esto es mucho más rápido que otras soluciones, porque es el código que se ejecuta cuando lo desea (lo explicaré más adelante). La forma más fácil sería subclase View y trabajar desde allí.

La tecnología detrás de las pruebas A / B es lo mismo que prácticamente cualquier información que obtenga de un servidor y presente a un usuario. Realmente no hay diferencia.

Ahora, para abordar su 'una línea de código', así, está la salsa secreta. En iOS, los desarrolladores tienen la suerte de tener swizzling método en el que pueden ver literalmente cuando un método se llama y reemplazarlo con sus propias cosas. ¡Eso hace las cosas relativamente fáciles!

¿Pero para Android? Bueno, no hay tal suerte. Echa un vistazo a los parámetros de entrada para cada una de las pruebas A / B / plataforma de análisis en Android: Foo.start(AppContext, "apiKey");

La magia está en AppContext. Appcontext es esencialmente una interfaz en el propio Android. Es lo que lo hace Android en lugar de Java. AppContext tiene información acerca de todo: qué actividades se ejecutan, cuándo se ejecutan, qué intenciones se están pasando, casi todo. Con el AppContext en la mano, usted tiene un montón de control e información sobre la aplicación.

A partir de ahí, básicamente construir un árbol AppContext. Cada poco de información que necesita de la aplicación sólo se ramifica de AppContext. AppContext -> Actividades -> Vistas. AppContext -> Actividades -> Vistas -> Fragmentos -> Vistas de fragmentos. AppContext -> Servicios -> Push. Mixpanel realmente llama a este 'ViewCrawling' en su solución, lo que puede darle una mejor visualización mental de lo que está pasando.

Usted acaba de crear este gran árbol sinuoso con las ramas que alcanzan cada pequeño aspecto de la aplicación por lo que cuando usted quiere hacer un cambio a algo, usted es capaz de encontrar en su árbol! Una vez que tengas lo que quieres, sólo tienes que tomar la información del servidor (o un caché local), ya sea JSON o XML o lo que sea y hacer el cambio que necesita sobre la base de esa información.

Pero como he dicho anteriormente, utilice sus propios elementos de interfaz de usuario. Es mucho más fácil para ti determinar lo que necesita cambiar antes de dibujar el elemento. Especialmente si subclases View, no debería necesitar mucho código en absoluto. La instalación de una línea es pura comodidad y hace que todo para (el SDK dev) sea mucho más difícil. Pero no puedo ir y pedir a la gente que cambie cada vista en su aplicación para ser una subclase de mis propias cosas, ¿no?

Así que ahí está. Requiere un conocimiento intenso del SDK de Android para poder gatear en todos los aspectos de la misma según sea necesario. La idea es simple, pero las ejecuciones más profundas se hacen increíblemente complejas.

Estoy abierto a cualquier pregunta! Eso es una visión general real de todo, y se vuelve más complejo, así que pregunte.

De hecho, mi experiencia con las pruebas A / B fue usar Google Tag Manager, que me ayuda a administrar un "paquete dinámico". Teniendo este paquete dentro de mi aplicación, hincho diseños, colorear elementos y así de acuerdo con los valores proporcionados por este paquete. Echa un vistazo a los documentos de GTM y estoy seguro de que encontrarás algo útil.

Como ejemplo, la empresa Leanplum ofrece un editor de interfaz visual para iOS y Android: esto no requiere codificación, y Leanplum detectará automáticamente los elementos y le permitirá cambiarlos. No se requieren ingenieros o resubmissions de la tienda de aplicaciones.

Soy ingeniero en Leanplum; Por lo tanto déjeme darle un poco más de penetración sobre él:

  1. Al instalar el SDK de iOS o Android en su aplicación, habilita una función llamada Editor Visual. Mientras está en el modo de desarrollo y con el Panel de Web abierto, el SDK envía información sobre la jerarquía de vistas en tiempo real a su Navegador. La jerarquía de vista se escanea de forma similar a la que se construye un DOM en un sitio web normal.
  2. Puede elegir cualquier elemento de interfaz de usuario en su aplicación y cambiar su apariencia en tiempo real. Esto funciona identificando el elemento exacto en el árbol de vista y enviando los cambios al SDK.
  3. Esto se puede lograr mediante la adición de ganchos personalizados o una técnica llamada "swizzling". Echa un vistazo a esta entrada del blog , cómo funciona.

Para obtener más información acerca de Leanplum Visual Interface Editor, consulte leanplum.com . Ofrecen una prueba gratuita de 30 días.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.