Soporte de notificaciones push
Realice un seguimiento de las interacciones de los usuarios con las notificaciones push para medir las campañas de reenganche y atribuir las conversiones con precisión mediante la integración de Apple Push Notification Service (APN) con Singular SDK.
Siga las siguientes directrices de implementación para garantizar que los datos de las notificaciones se transmiten correctamente al SDK de Singular para una atribución adecuada.
Por qué hacer un seguimiento de las notificaciones push: Las notificaciones push impulsan el reenganche, pero el seguimiento requiere una integración correcta. Singular garantiza la correcta atribución de los usuarios que interactúan con las notificaciones, optimizando las campañas de marketing y las estrategias de compromiso.
Guía de Implementación
Registro para notificaciones push
Solicite autorización a los usuarios para recibir notificaciones push y registre la aplicación con APNs utilizando odedeUNUserNotificationCenter.
import UserNotifications
// Set the current instance as the delegate for UNUserNotificationCenter
UNUserNotificationCenter.current().delegate = self
// Define the notification authorization options (alert, badge, sound)
let pushAuthOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
// Request notification authorization from the user
UNUserNotificationCenter.current().requestAuthorization(options: pushAuthOptions) { granted, error in
// If an error occurs during authorization, print the error description
if let error = error {
print("registerForPushNotifications : failure - \(error.localizedDescription)")
}
// If the user granted permission, register for remote notifications
if granted {
// Ensure registration is done on the main thread
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
}
}
- (void)registerForPushNotifications:(UIApplication *)application {
// Set delegate to self
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
// Define the push notification options
UNAuthorizationOptions pushAuthOptions = UNAuthorizationOptionAlert |
UNAuthorizationOptionBadge |
UNAuthorizationOptionSound;
// Request push notification authorization
[[UNUserNotificationCenter currentNotificationCenter]
requestAuthorizationWithOptions:pushAuthOptions
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (error) {
NSLog(@"registerForPushNotifications : failure - %@", error.localizedDescription);
}
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[application registerForRemoteNotifications];
});
}
}];
}
Mejor práctica: Solicite la autorización de notificaciones al principio del ciclo de vida de la aplicación, idealmente después de demostrar el valor a los usuarios para mejorar las tasas de opt-in.
Gestión de las respuestas a las notificaciones
Procese las respuestas de notificación cuando los usuarios toquen las notificaciones push y envíe los datos de la carga útil a Singular para su seguimiento.
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
// Extract the notification payload
let userInfo = response.notification.request.content.userInfo
// Pass the notification data to Singular for tracking
Singular.handlePushNotification(userInfo)
// Call the completion handler to indicate processing is complete
completionHandler()
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void (^)(void))completionHandler {
// Extract the push notification payload (user info)
NSDictionary *userInfo = response.notification.request.content.userInfo;
// Log the userInfo dictionary for debugging purposes
NSLog(@"didReceiveNotificationResponse userInfo = %@", userInfo);
// Pass the notification data to Singular for tracking
[Singular handlePushNotification:userInfo];
// Call the completion handler to indicate processing is complete
completionHandler();
}
Práctica recomendada: Llame siempre al gestor de finalización con prontitud para garantizar que el sistema sabe que el procesamiento de la notificación ha finalizado. El retraso en la finalización puede dar lugar a advertencias del sistema o estrangulamiento.
Configuración del SDK para cargas útiles push
Añada selectores de carga útil de notificaciones push a la configuración del SDK para especificar dónde se encuentran los enlaces de Singular en la estructura de datos de la notificación.
func getConfig() -> SingularConfig? {
guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
return nil
}
// Configure push notification link paths
config.pushNotificationLinkPath = [
["sng_link"],
["rootObj", "nestedObj", "anotherNested", "singularLink"]
]
return config
}
// Start the Singular SDK with the configuration
if let config = getConfig() {
Singular.start(config)
}
- (SingularConfig *)getConfig {
SingularConfig *config = [[SingularConfig alloc] initWithApiKey:@"SDK_KEY"
andSecret:@"SDK_SECRET"];
// Configure push notification link paths
config.pushNotificationLinkPath = @[
@[@"sng_link"],
@[@"rootObj", @"nestedObj", @"anotherNested", @"singularLink"]
];
return config;
}
// Start the Singular SDK with the configuration
SingularConfig *config = [self getConfig];
[Singular start:config];
Configuraciónde selectores:
-
Claves simples: Utilice
["sng_link"]para las claves de nivel superior de la carga útil. - Claves anidadas: Utilice odede["rootObj", "nestedObj", "key"] para recorrer estructuras JSON anidadas.
- Varias rutas: Defina múltiples matrices de selectores para comprobar diferentes ubicaciones posibles para los enlaces singulares
Guía de validación
Verificación de la carga útil en la sesión de inicio
Confirme que los enlaces de notificaciones push se pasan correctamente a Singular inspeccionando la llamada a la API de inicio de sesión.
Singular SDK incluye la carga útil de la notificación push en el parámetro singular_link de la solicitud de inicio de sesión cuando los usuarios tocan las notificaciones.
Ejemplo de solicitud de inicio de sesión:
https://skan.singular.net:443/api/v1/start?
dnt=-1
&update_time=0
&singular_link=https://sl.sng.link/Cclbu/2a7n?_dl=com.singular.app&_smtype=3
&i=com.singular.SwiftScene
&sdk=Singular/12.7.1
&p=iOS
&v=18.2.1
Verificación alternativa: Utilice la consola de Singular SDK para verificar el seguimiento de las notificaciones push. Compruebe el campo Deeplink URL para confirmar que el enlace de seguimiento se ha capturado correctamente.
Configuración avanzada
Configuración de dominios ESP
Configure dominios externos si envuelve enlaces de Singular dentro de dominios de proveedores de servicios de correo electrónico (ESP) u otros dominios de terceros.
func getConfig() -> SingularConfig? {
guard let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET") else {
return nil
}
// Configure ESP domains for wrapped links
config.espDomains = ["sl.esp.link", "custom.domain.com"]
return config
}
- (SingularConfig *)getConfig {
SingularConfig *config = [[SingularConfig alloc] initWithApiKey:@"SDK_KEY"
andSecret:@"SDK_SECRET"];
// Configure ESP domains for wrapped links
config.espDomains = @[@"sl.esp.link", @"custom.domain.com"];
return config;
}
Nota de seguridad: de forma predeterminada, sólo se permiten los dominios sng.linkpredefinidos en la página Administrar enlaces singulares. Configure los dominios ESP explícitamente si utiliza enlaces envueltos.
Enrutamiento dinámico de enlaces profundos
Implemente múltiples destinos de enlaces profundos desde una única notificación configurando un enlace de seguimiento Singular con redireccionamientos dinámicos.
Ejemplo de uso: Una notificación de noticias de última hora con múltiples opciones de acción
-
Leer últimas noticias:
newsapp://article?id=12345 -
Temas de actualidad:
newsapp://trending -
Deportes:
newsapp://sports
En lugar de crear varios enlaces de seguimiento, utilice un enlace Singular y anule las redirecciones dinámicamente en función de la selección del usuario. Consulte Modificación de redireccionamientos en enlaces de seguimiento singularespara obtener detalles sobre la implementación.
Consideraciones importantes
Notas de implementación
-
Sin controlador de devolución de llamada: A diferencia de
singularLinksHandler, la función de notificación push no proporciona devoluciones de llamada de carga. Implemente su propia lógica de enlace profundo para dirigir a los usuarios a contenido específico dentro de su aplicación. -
Flujo de atribución: Cuando los usuarios tocan las notificaciones, Singular recupera la carga útil y la incluye en el evento de inicio de sesión activado por
Singular.start(). El backend procesa estos datos para atribuir el punto de contacto de la notificación push y registrar el seguimiento del reenganche. -
Restricciones de dominio: Por defecto, sólo se permiten dominios de enlace Singular (
sng.link) de la página Gestionar enlaces. Configure dominios ESP explícitamente para enlaces envueltos utilizandoespDomains.
Éxito: Siguiendo estos pasos, su aplicación ahora realiza un seguimiento de las interacciones de notificaciones push con Singular, lo que mejora la información sobre el rendimiento de la campaña y garantiza una atribución precisa del reenganche.