NewRelic & Continuación Instruments iOS

Enlaces Recomendados

1. Resumen

New Relic es una herramienta que permite obtener información no solo del rendimiento de la aplicación, sino de sus usuarios e inclusive de sus errores (Crashes). En iOS también se puede añadir dicha librería para tener control sobre las decisiones que afectan las nuevas versiones de la aplicación.

2. New Relic

Lo primero, es acceder nuevamente al panel de New Relic a través de https://newrelic.com . Es necesario tener una cuenta para poder realizar los pasos a continuación. Dirigirse a la sección de Tecnologías Móviles y seleccionar la plataforma iOS:

Una vez esté seleccionada, se debe ingresar el nombre con el que se identificará la aplicación en la plataforma de NewRelic:

Al escoger el nombre, se debe pulsar sobre el botón Continue para verificar que el nombre es válido.

Existen dos versiones de NewRelic, la versión Established que es aquella que es más estable y tiene más documentación. Y esta la versión Latest que contiene las nuevas actualizaciones. En este caso, seleccionar Latest y seleccionar sobre el botón de Cocoapods. Esto para poder instalar la librería de New Relic en nuestra aplicación:

Se desplegarán nuevas ventanas con la información que se debe colocar en el Podfile. Ir al proyecto y modificar el archivo, agregando la línea pod ‘NewRelicAgent’.

Una vez actualizado, instalar el nuevo Pod al proyecto utilizando el comando pod install.

El proyecto ya tiene la librería de NewRelic instalada. Sin embargo, esta librería no está escrita en Swift. Cocoapods y en general Xcode permiten que las aplicaciones tengan los dos lenguajes funcionando al mismo tiempo. Para importar Objective-C en Swift. Lo primero que se debe hacer es tratar de crear una clase pulsando New file sobre el directorio de archivos:

Esta nueva clase va a ser borrada, por lo que su nombre no importa. Lo importante es seleccionar el lenguaje de programación Objective-C:

En el momento en que la clase es creada, Xcode desplegará una nueva ventana preguntando si se debe o no crear un Bridging Header. Este Header, no es más que un archivo que puede ser leído tanto por Swift como por Objective-C para que en él se puedan exponer las clases de Objective-C que se quieren usar en Swift. Basta con importarlas en el archivo para que Swift las utilice. Cabe aclarar que el código escrito en Swift, utilizando estas clases, será también Swift. Los métodos y variables de Objective-C serán “Convertidos” para ser usados en Swift.

Borrar los archivos de la clase creada:

Debería aparecer un nuevo archivo, aparte de los que fueron borrados, que tiene como nombre NombreApp-Bridging-Header.h.

Este es un archivo que lee código fuente en lenguaje Objective-C. Por ende, acá se puede importar la librería de NewRelic para que Swift pueda acceder a ella. Basta con introducir un import en Objective-C: #import <NewRelicAgent/NewRelic.h>

De vuelta en el AppDelegate.swift de la aplicación, se debe inicializar el Agente de NewRelic en el método didFinishLaunchingWithOptions. En la página web, se creó un Token que es único a cada cuenta y debe ser insertado en la inicialización.

Finalmente, para que New Relic pueda funcionar, se debe ir a los ajustes del proyecto en Build Phases y agregar un Run Script. Esto se logra seleccionando el botón de “+” en esta ventana. Un Run Script es un Script que se ejecuta siempre que se corre la aplicación. Normalmente acá se introducen configuraciones iniciales para librerías o ajustes para definir la firma de algunas Frameworks que se importan al proyecto sin Cocoapods, entre otros usos.

Dentro del nuevo script, (Expandiendo la sección “Run Script” que fue creada) se debe introducir el texto dado por New Relic al momento de seguir la configuración. Este Script también contiene el Token dado por la plataforma para cada cuenta.

Al correr la aplicación, New Relic reconocerá que fue configurada la aplicación y procederá a obtener información para luego mostrarla en el Dashboard. Esperar unos segundos:

Luego de obtener información suficiente, se puede consultar el Dashboard.

En New Relic se puede obtener información de la aplicación tal como versiones del dispositivo, tiempo de uso, mapa desde donde se usa la aplicación, errores, operadores móviles usados, entre otros.

Por ejemplo, podemos ver las solicitudes HTTP que se hacen desde la aplicación. En este caso todas son del API para cargar los platos o de las APIS de Google instaladas en guías anteriores para la implementación de Mapas.

2. Instruments

Siguiendo con la guía previa, se utilizarán nuevas herramientas de Instruments para hacer Profiling de la aplicación. Recordar que en la anterior guía se introdujeron HotSpots y métodos que sobrecargaban la aplicación y la red móvil. En caso de querer usar el mismo código para realizar estas pruebas, referirse a dicha guía. En esta ocasión, abrir Instruments y seleccionar Network:

Correr la aplicación en el dispositivo y seleccionarla en el target, a continuación, pulsar sobre el botón de grabar. Se puede observar como a medida que cargan las imágenes de los platos las conexiones a internet oscilan y llegan a descargar hasta casi 5.4 MB. Mientras que los datos enviados son menores a 6 KiB. También se puede ver como el Caché de AFNetworking hace que las consultas a internet desaparezcan después del segundo 11 cuando ya todas las imágenes han sido descargadas sin importar si se vuelven a usar en la aplicación en otro UIImageView.

Se puede seleccionar “Other” en la tabla de detalles para ver qué proceso está aportando al conglomerado del uso de la red de datos. En este caso, la mayoría de las descargas y subidas son debido a la aplicación en cuestión:

Instruments también permite crear pruebas con más de una medición. Esto con el fin de medir el impacto de una medida sobre otra. Por ejemplo, agregar el análisis de luminosidad del Display, Uso de la batería y estadísticas de CoreAnimation:

Al correr nuevamente el proceso, podemos ver como cada uno de los medidores toman su respectiva información y la van mostrando sobre una misma línea de tiempo para que esta pueda ser analizada. Por ejemplo, podemos ver como los picos de descarga, corresponden levemente con el uso de CoreAnimation. Esto puede significar que, al descargar la imagen, y ser actualizada en las UIImageViews, se hace un procesamiento gráfico para colocarlas. Podemos ver también que la luminosidad de la pantalla no afecta ninguna otra medida. La batería no tiene descarga significativa para los procesos actuales.

Finalmente, agregar una última medida, la actividad del CPU.

Acá se puede ver como la actividad del CPU se mantiene constante durante la ejecución de la aplicación. Pero como se vio en el laboratorio anterior, cualquier ciclo o recorrido exhaustivo, puede elevar los datos y picos esta gráfica.

2. Resumen

Se espera que el estudiante tome la información dada por NewRelic y la utilice para realizar análisis pertinentes para el funcionamiento y desarrollo de su aplicación, así como se espera que utilice nuevas y diferentes plantillas en Instruments para optimizar la aplicación.

Versiones del documento

Versión Autor(es) Fecha
1.0 DANIEL ALEJANDRO ORDÓÑEZ, JUAN DAVID CRUZ SERRANO Jueves 19 de Abril, 2017
1.1 MARIO LINARES VASQUEZ Viernes 20 de Abril, 2017
1.2 DANIEL ALEJANDRO ORDÓÑEZ, JUAN DAVID CRUZ SERRANO Sábado 22 de Abril, 2017
1.3 JUAN DAVID CRUZ SERRANO Viernes 17 de Noviembre, 2017

results matching ""

    No results matching ""