Implementación del seguimiento local local-tracking
Acerca del seguimiento local about-local-tracking
En esta página, aprenderá a asegurarse de que el seguimiento de notificaciones locales se ha implementado correctamente. Tenga en cuenta que esto implica que la notificación local ya se ha configurado.
El seguimiento de notificaciones locales se puede dividir en tres tipos:
-
Impresiones locales: cuando se ha enviado una notificación local al dispositivo y está en el centro de notificaciones, pero no se ha tocado en absoluto. En la mayoría de los casos, el número de impresiones debe ser similar, si no igual, al número enviado. Garantiza que el dispositivo haya recibido el mensaje y retransmite esa información al servidor.
-
Clic local: cuando se ha enviado una notificación local al dispositivo y el usuario ha hecho clic en la notificación. El usuario deseaba ver la notificación (que a su vez pasará al seguimiento de aperturas local) o descartarla.
-
Apertura local: cuando se ha enviado una notificación local al dispositivo y el usuario ha hecho clic en la notificación que provoca la apertura de la aplicación. Esto es similar al clic local, excepto que la apertura local no se activa si se descarta la notificación.
Para implementar el seguimiento para Adobe Campaign Standard, la aplicación móvil debe incluir el SDK móvil en la aplicación. Estos SDK están disponibles en Adobe Mobile Services.
Para enviar información de seguimiento, hay tres variables que se deben enviar: dos son parte de los datos recibidos de Adobe Campaign y la otra es una variable de acción que dicta si es una impresión, un clic o una apertura.
deliveryId
a partir de datos entrantes (similar al seguimiento push donde se usa _dld
)broadlogId
a partir de datos entrantes (similar al seguimiento push donde se usa _mld
)Implementación del seguimiento de impresiones locales implement-local-impression-tracking
El SDK de Adobe Experience Platform Mobile enviará automáticamente el evento de impresión tanto para Android como para iOS sin ninguna configuración adicional.
Implementación del rastreo de clics implementing-click-tracking
Para el rastreo de clics, debe enviar el valor "2" para que se lleve a cabo una acción al llamar a las funciones collectMessageInfo()
o trackAction()
.
Para Android implement-click-tracking-android
Para rastrear clics, se deben implementar dos escenarios:
-
El usuario ve la notificación, pero la borra.
Para rastrear clics en caso de descarte, agregue el receptor de difusión
NotificationDismissalHandler
al archivo AndroidManifest del módulo de la aplicación.code language-none <receiver android:name="com.adobe.marketing.mobile.NotificationDismissalHandler"> </receiver>
-
El usuario ve la notificación y hace clic en ella, lo que da como resultado un seguimiento abierto.
Este escenario debería producir un clic y una apertura. El seguimiento de este clic formará parte de la implementación necesaria para realizar el seguimiento de la apertura. Consulte Implementación del seguimiento abierto.
Para iOS implement-click-tracking-ios
Para enviar la información de rastreo de clics, debe añadir lo siguiente:
class NotificationDelegate: NSObject, UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
switch response.actionIdentifier {
case UNNotificationDismissActionIdentifier:
print("Dismiss Action")
let deliveryId = userInfo["deliveryId"] as? String
let broadlogId = userInfo["broadlogId"] as? String
if (deliveryId != nil && broadlogId != nil) {
//If you are using ACPCore v2.3.0 or later, use the next line.
ACPCore.collectMessageInfo(["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"2"])
//Else comment out the above line and uncomment the line below
// ACPCore.trackAction("tracking", data: ["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"2"])
}
default:
////MORE CODE
}
completionHandler()
}
}
Implementación del seguimiento abierto implement-open-tracking
Debe enviar "1" y "2", ya que el usuario debe hacer clic en la notificación para abrir la aplicación. Si la aplicación no se inicia o abre mediante una notificación local, no se produce ningún evento de seguimiento.
Para Android implement-open-tracking-android
Para rastrear la apertura, debemos crear la intención. Los objetos de intención permiten al sistema operativo Android llamar al método cuando se realizan determinadas acciones, en este caso haciendo clic en la notificación para abrir la aplicación.
Este código se basa en la implementación del seguimiento de impresiones de clics. Con la intención definida, ahora debe devolver la información de seguimiento a Adobe Campaign. En este caso, la vista de Android (Activity) que activó la notificación se abrirá o se colocará en primer plano como resultado del clic del usuario. El objeto Intent de Activity contiene los datos de notificación que se pueden usar para realizar el seguimiento de las aperturas.
MainActivity.java (amplía Activity)
@Override
protected void onResume() {
super.onResume();
handleTracking();
}
private void handleTracking() {
//Check to see if this view was opened based on a notification
Intent intent = getIntent();
Bundle data = intent.getExtras();
if (data != null) {
//Opened based on the notification, you must get the tracking that was passed on.
Map<String, String> notificationData = (Map<String, Object>)data.getSerializableExtra("NOTIFICATION_USER_INFO");
String deliveryId = (String)notificationData.get("deliveryId");
String messageId = (String)notificationData.get("broadlogId");
if (deliveryId != null && messageId != null) {
HashMap<String, String> contextData = new HashMap<>();
contextData.put("deliveryId", deliveryId);
contextData.put("broadlogId", messageId);
//Send click tracking since the user did click on the notification
contextData.put("action", "2");
//If you are using ACPCore v1.4.0 or later, use the next line.
MobileCore.collectMessageInfo(contextData);
//Else comment out the above line and uncomment the line below
// MobileCore.trackAction("tracking", contextData);
//Send open tracking since the user opened the app
contextData.put("action", "1");
//If you are using ACPCore v1.4.0 or later, use the next line.
MobileCore.collectMessageInfo(contextData);
//Else comment out the above line and uncomment the line below
// MobileCore.trackAction("tracking", contextData);
}
}
}
Para iOS implement-open-tracking-ios
import os.log
import Foundation
import UserNotifications
import UserNotificationsUI
import ACPCore
class NotificationDelegate: NSObject, UNUserNotificationCenterDelegate {
//Called when user clicks the local notification or also called from willPresent()
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
os_log("App push data %{public}@, in userNotificationCenter:didReceive()", type: .debug, userInfo)
switch response.actionIdentifier {
case UNNotificationDismissActionIdentifier:
//This is to handle the Dismiss action
let deliveryId = userInfo["deliveryId"] as? String
let broadlogId = userInfo["broadlogId"] as? String
if (deliveryId != nil && broadlogId != nil) {
//If you are using ACPCore v2.3.0 or later, use the next line.
ACPCore.collectMessageInfo(["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"2"])
//Else comment out the above line and uncomment the line below
// ACPCore.trackAction("tracking", data: ["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"2"])
}
default:
//This is to handle the tracking when the app opens
let deliveryId = userInfo["deliveryId"] as? String
let broadlogId = userInfo["broadlogId"] as? String
if (deliveryId != nil && broadlogId != nil) {
//If you are using ACPCore v2.3.0 or later, use the next line.
ACPCore.collectMessageInfo(["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"2"])
ACPCore.collectMessageInfo(["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"1"])
//Else comment out the above line and uncomment the line below
// ACPCore.trackAction("tracking", data: ["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"2"])
// ACPCore.trackAction("tracking", data: ["deliveryId": deliveryId!, "broadlogId": broadlogId!, "action":"1"])
}
}
completionHandler()
}
}