Este documento le explica cómo actualizar su proyecto watchOS para que pueda monitor con New Relic. Debido a que los proyectos de watchOS aún no contienen una clase ApplicationDelegate
o ExtensionDelegate
, deberás agregar una u otra a tu proyecto. Estos delegados son necesarios para configurar e iniciar el agente New Relic en un proyecto de watchOS.
Requisitos
Antes de agregar WatchAppDelegate
, primero instale el agente New Relic.
Importante
Para garantizar una instrumentación adecuada, debe configurar e iniciar el agente como primer paso en applicationDidFinishLaunching()
y luego ejecutar el agente en el subproceso principal. Iniciar la llamada más tarde, en un subproceso en segundo plano o de forma asincrónica, puede provocar un comportamiento inesperado o inestable.
Luego de instalar el agente, consulte las instrucciones a continuación para usar WatchAppDelegate
o la extensión watchOs.
Habilitar New Relic con WatchAppDelegate
Cree un archivo
WatchAppDelegate.swift
en su proyecto, luego agregue una clase llamadaWatchAppDelegate
que herede deNSObject
. Esta clase debe ajustar al protocoloWKApplicationDelegate
.Agregue el
applicationDidFinishLaunching
a la claseWatchAppDelegate
. Lo más cerca del inicio de la funciónapplicationDidFinishLaunching
, agregueNewRelic.start(withApplicationToken: "APP_TOKEN")
. Cerciorar de reemplazarAPP_TOKEN
con sutoken de aplicación. Su código podría ver así:import WatchKitimport NewRelicclass WatchAppDelegate: NSObject, WKApplicationDelegate {func applicationDidFinishLaunching() {NewRelic.start(withApplicationToken: "APP_TOKEN")return true}}En el objeto de estructura de la aplicación principal, agregue el siguiente fragmento:
import NewRelic@mainstruct Watch_App: App {@WKApplicationDelegateAdaptor var appDelegate: WatchAppDelegate}
Habilite New Relic con la extensión watchOS
Agregue la clave
WKExtensionDelegateClassName
en el archivoInfo.plist
de su extensión WatchKit. Esto crea automáticamente un objeto delegado llamadoExtensionDelegate
. Para obtener más información, consulte WKExtensionDelegate.En la clase
ExtensionDelegate
que creó, agregue la funciónapplicationDidFinishLaunching
.Lo más cerca posible del inicio de
applicationDidFinishLaunching
, agregueNewRelic.start(withApplicationToken: "APP_TOKEN")
reemplazandoAPP_TOKEN
con su token de aplicación. Su código podría ver así:import WatckKitimport NewRelicclass ExtensionDelegate: NSObject, WKExtensionDelegate {func applicationDidFinishLaunching() {NewRelic.start(withApplicationToken: "APP_TOKEN")return true}}
Limitaciones de la plataforma watchOS
Apple no proporciona las mismas API de iOS para la plataforma watchOS. Esto significa que ciertas características del agente de iOS aún no están disponibles en watchOS. Buscamos tener paridad en nuestra plataforma, por lo que a medida que Apple lance nueva funcionalidad, continuaremos actualizando el agente. A continuación se muestran algunas características conocidas que actualmente no son compatibles:
- Manejo de fallos:
PLCrashReporter
es una biblioteca de terceros que emplea el agente, que no es compatible con watchOS. - Recuento de fallos: debido a que los fallos no se informan en watchOS, no podemos recopilar el recuento de fallos.
- Excepciones manejadas: el agente captura y carga excepciones manejadas, pero New Relic no puede mostrarlas actualmente.
- Recolección en segundo plano: si
NRFeatureFlag_BackgroundReporting
está habilitado, el agente continuará monitor la aplicación, pero no recolectará ni cargará en New Relic mientras esté en segundo plano. - Evento marcado sin conexión: si
NRFeatureFlag_OfflineStorage
está habilitado, el agente puede almacenar cosechas sin conexión y luego enviarlas cuando esté en línea. El evento creado en estado offline, sin embargo, no será marcado como tal en el nivel de atributo. - Horas de inicio de la aplicación caliente/fría: el agente depende de la notificación de UIKit para capturar las horas de inicio caliente/frío, pero esta información aún no está disponible para watchOS.
Si necesita ayuda adicional, puede comunicar con el soporte en support.newrelic.com.