Seguimiento del reenganche mediante notificaciones push
Singular admite el seguimiento de notificaciones push para mejorar la medición del reenganche. Mediante la integración de Firebase Cloud Messaging (FCM) con el SDK de Singular, puede realizar un seguimiento de los usuarios que interactúan con las notificaciones push y atribuirlos en consecuencia.
Para garantizar un seguimiento preciso, siga las directrices de implementación que se indican a continuación y asegúrese de que los datos de las notificaciones se transmiten correctamente a Singular SDK.
¿Por qué es importante el seguimiento de las notificaciones push?
Las notificaciones push son una herramienta clave de captación, pero su seguimiento requiere una integración correcta. Singular asegura que los usuarios que interactúan con las notificaciones son atribuidos correctamente, ayudando a optimizar las campañas de marketing y las estrategias de compromiso.
Guía de implementación
Paso 1: Manejo de notificaciones de Firebase Cloud Messaging (FCM)
Cuando su aplicación recibe una notificación push de Firebase, se activa el método onMessageReceived(). Para realizar un seguimiento de las notificaciones en Singular, actualice este método para procesar los datos de la notificación.
Ejemplo:
@Override
public void onMessageReceived(@NonNull RemoteMessage message) {
super.onMessageReceived(message);
String title = "";
String body = "";
if (message.getNotification() != null) {
Log.d("===singular-app", message.getNotification().toString());
title = message.getNotification().getTitle();
body = message.getNotification().getBody();
}
Map<String, String> data = message.getData(); // Fixed the incorrect Map generic type
if (!data.isEmpty()) {
Log.d("===singular-app", data.toString());
}
// Implement processNotification method to forward payload data to intent
processNotification(title, body, data);
}
override fun onMessageReceived(message: RemoteMessage) {
super.onMessageReceived(message)
var title = ""
var body = ""
message.notification?.let {
Log.d("===singular-app", it.toString())
title = it.title ?: ""
body = it.body ?: ""
}
val data: Map<String, String> = message.data
if (data.isNotEmpty()) {
Log.d("===singular-app", data.toString())
}
// Implement processNotification method to forward payload data to intent
processNotification(title, body, data)
}
Esto garantiza que todos los datos push relevantes se capturen y se transmitan para su procesamiento.
Paso 2: Procesar las notificaciones push y pasar los datos a Singular
Una vez recibida la notificación, es crucial pasar sus datos a una intent que lance la actividad principal en la que se inicializa Singular.
Ejemplo:
private void processNotification(String title, String body, Map<String, String> data) {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Attach notification data to the intent
for (Map.Entry<String, String> entry : data.entrySet()) {
intent.putExtra(entry.getKey(), entry.getValue());
}
PendingIntent pendingIntent = PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Added FLAG_IMMUTABLE for API 31+
);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "your_channel_id")
.setSmallIcon(R.drawable.info_btn)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH) // Optional: Set priority for better visibility
.setAutoCancel(true)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null) {
notificationManager.notify(0, notificationBuilder.build());
}
}
private fun processNotification(title: String, body: String, data: Map<String, String>) {
val intent = Intent(this, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
// Attach notification data to the intent
data.forEach { (key, value) ->
putExtra(key, value)
}
}
val pendingIntent = PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE // For Android 12+
)
val notificationBuilder = NotificationCompat.Builder(this, "your_channel_id")
.setSmallIcon(R.drawable.info_btn)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH) // Optional for better visibility
.setAutoCancel(true)
.setContentIntent(pendingIntent)
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager
notificationManager?.notify(0, notificationBuilder.build())
}
Esto garantiza que cuando el usuario pulse la notificación, se le dirija a la actividad adecuada con los datos de seguimiento correctos.
Paso 3: Integración de cargas útiles de notificaciones Push con el SDK de Singular
Por último, actualice la configuración de Singular SDK para garantizar que las cargas útiles de las notificaciones push se transmiten y procesan correctamente.
Ejemplo:
String[][] pushSelectors = {
{"sng_link"},
{"rootObj", "nestedObj", "anotherNested", "singularLink"}
};
config.withPushNotificationPayload(intent, pushSelectors);
Singular.init(context, config);
val pushSelectors = arrayOf(
arrayOf("sng_link"),
arrayOf("rootObj", "nestedObj", "anotherNested", "singularLink")
)
config.withPushNotificationPayload(intent, pushSelectors)
Singular.init(context, config)
Este paso asegura que Singular rastrea correctamente los compromisos de notificaciones push con fines de atribución.
Guía de validación
La llamada a la API de Singular SDK garantiza que el enlace de la carga útil de la notificación push se pasa correctamente bajo el parámetro reservado singular_link en la llamada de inicio de sesión.
Ejemplo:
https://sdk-api-v1.singular.net/api/v1/start?a=<SDK-Key>&ab=arm64-v8a&aifa=180f63a1-0955-47b4-896a-d75ae3d35955&apc=Marchv7&apg=1&aps=Intex&asid_scope=1&asid_timeinterval=0.112&av=20.0&br=samsung&c=wifi¤t_device_time=1740905574088&de=m15x&device_type=phone&device_user_agent=Dalvik/2.1.0 (Linux; U; Android 14; SM-E156B Build/UP1A.231005.007)&dnt=0&event_index=3&fi=e5bRZuVddO8:APA91bHXI3OmFZv3-r8f03zyji2kvKWbIngwf8KBDHk4Rj5q5MEeEm6EtzC-if1vpJRmuYLyGdAcSz9-nc49eIjD86xwj-n9J4jKucqMVt9mP8ICifP0arA&i=net.singular.singularsampleapp&install_time=1740905507036&is=false&k=SDID&lag=0.067&lc=en_IN&ma=samsung&mo=SM-E156B&n=Singular-TestApp-Debug&p=Android&pr=m15xnndins&pu=1&rt=json&s=1740905574084&sdk=Singular/v12.6.2&singular_install_id=2dc5dfc2-a2a8-484a-aad1-fed6cb7a3023&singular_link=https://singularassist2.sng.link/C4nw9/r1m0?_dl=singular://test&_smtype=3&src=com.android.shell&u=75f7b911-5a77-597d-8892-56f5e0e210ff&update_time=1740905507036&v=14&h=1e723fd90344d5d037059f110611ed1d84fbba88
Alternativamente, puede utilizar la consola de Singular SDK para verificar el enlace de seguimiento de la notificación push bajo la URL Deeplink, como se demuestra a continuación.
Al verificar esto, puede confirmar que los compromisos de notificación push se rastrean correctamente en Singular SDK.
Notas:
- Tenga en cuenta que, a diferencia del código del controlador de withSingularLink, Singular SDK no proporciona retrollamadas de carga útil push para esta función. Es responsabilidad del desarrollador de la aplicación leer los datos de la notificación push e implementar la lógica de enlace profundo para redirigir a los usuarios a páginas de productos específicas dentro de la aplicación. En esta solución, Singular recupera la carga útil de la notificación push cuando el usuario toca la notificación e incluye esta carga útil en el evento de inicio de sesión del SDK activado por Singular.init(). A continuación, estos datos se procesan en el backend de Singular para atribuir el punto de contacto/clic de la notificación push y registrarlo para el seguimiento del reenganche.
-
Disponemos de un mecanismo de seguridad que sólo permite dominios de enlace Singular a partir del par clave-valor personalizado pasado en la carga útil de la notificación push. En concreto, sólo se permiten los dominios sng.link predefinidos en la página Singular Manage Links.
Por ejemplo
https://prod_test.sng.link/B0s2a/51oi?_dl=singular%3A%2F%2Fmain
Si pretende envolver enlaces Singular dentro de un dominio diferente (por ejemplo, un dominio ESP para proveedores de servicios de correo electrónico), debe configurar explícitamente el dominio añadiendo la siguiente opción en su configuración: Esto garantiza que el dominio externo se reconozca y se permita dentro del marco de Singular. consulte el siguiente ejemplo de configuración. config.withESPDomains(Arrays.asList("sl.esp.link")) ;
-
Si necesita activar diferentes enlaces profundos en función de las acciones del usuario desde una única notificación push, puede utilizar un único enlace de seguimiento de Singular y modificar dinámicamente las redirecciones.
Ejemplo:
Una notificación push de noticias de última hora puede ofrecer múltiples opciones de enlaces profundos. En lugar de crear varios enlaces de seguimiento, configure un único enlace de seguimiento Singular y ajuste los redireccionamientos dinámicamente en función de la selección del usuario.
Leer últimas noticias →
Temas de actualidad → Trending Topicsnewsapp://article?id=12345
Deportes →newsapp://trending
newsapp://sports
Más información sobre la anulación de redirecciones en Enlaces de seguimiento singulares.
¡¡¡Éxito!!!
Siguiendo estos pasos, su aplicación ya está configurada para realizar un seguimiento de las interacciones de las notificaciones push mediante Singular. Esto ayuda a mejorar la información sobre el rendimiento de la campaña y garantiza una atribución precisa del reenganche.