Implementazione del tracciamento locale

Informazioni sul tracciamento locale

In questa pagina, scopri come garantire che il tracciamento delle notifiche locali sia stato implementato correttamente. Tieni presente che ciò implica che la notifica locale è già stata configurata.

Il tracciamento delle notifiche locali può essere suddiviso in tre tipi:

  • Impressioni locali - Quando una notifica locale viene recapitata al dispositivo ed è situata nel centro notifiche, ma non è stata toccata per nulla. Nella maggior parte dei casi, il numero di impression deve essere simile a quello fornito. In questo modo il dispositivo riceve il messaggio e restituisce tali informazioni al server.

  • Clic locale : quando una notifica locale viene recapitata al dispositivo e l’utente fa clic sulla notifica. L’utente voleva visualizzare la notifica (che a sua volta passerà al tracciamento aperto locale) o ignorare la notifica.

  • Apertura locale : evento di consegna di una notifica locale al dispositivo e dopo che l’utente ha fatto clic sulla notifica che causa l’apertura dell’applicazione. È simile al clic locale, ma se la notifica è stata rifiutata non verrà attivata un’apertura locale.

Per implementare il tracciamento per Adobe Campaign Standard, l’app mobile deve includere Mobile SDK nell’applicazione. Questi SDK sono disponibili in Adobe Mobile Services.

Per inviare le informazioni di tracciamento, sono necessarie tre variabili: due sono parte dei dati ricevuti da Adobe Campaign e l’altro è una variabile di azione che determina se si tratta di un’impression, un clic o un’apertura.

Variabile Valore
deliveryId deliveryId dai dati in arrivo (simile al tracciamento push dove _dld viene utilizzato)
broadlogId broadlogId dai dati in arrivo (simile al tracciamento push dove _mld viene utilizzato)
action "1" per Open, "2" per Click e "7" per Impression

Implementare il tracciamento locale delle impression

L’SDK di Adobe Experience Platform Mobile invierà automaticamente l’evento impression per Android e iOS senza alcuna configurazione aggiuntiva.

Implementa il tracciamento dei clic

Per il tracciamento dei clic, è necessario inviare il valore "2" per l'azione quando si richiamano le funzioni collectMessageInfo() o trackAction() .

Per Android

Per tenere traccia dei clic, è necessario gestire due scenari:

  • L’utente visualizza la notifica ma la cancella.

    Per tenere traccia del clic in caso di scenario di licenziamento, aggiungi il ricevitore di trasmissione NotificationDismissalHandler nel file AndroidManifest del modulo dell'applicazione.

    <receiver
    android:name="com.adobe.marketing.mobile.NotificationDismissalHandler">
    </receiver>
    
  • L’utente visualizza la notifica e fa clic su di essa, per attivare un tracciamento aperto.

    Questo scenario deve produrre un clic e un'apertura. Il tracciamento di questo clic farà parte dell’implementazione necessaria per tenere traccia dell’apertura. Consulta Implementazione del tracciamento aperto.

Per iOS

Per inviare le informazioni di tracciamento dei clic, devi aggiungere quanto segue:

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()
    }
}

Implementare il tracciamento delle operazioni di apertura

Devi inviare "1" e "2" perché l'utente deve fare clic sulla notifica per aprire l'applicazione. Se l'applicazione non viene avviata/aperta tramite notifica locale, non si verificano eventi di tracciamento.

Per Android

Per tenere traccia dell'apertura, è necessario creare un intento. Gli oggetti Intent consentono ad Android OS di chiamare il metodo al termine di determinate azioni, in questo caso facendo clic sulla notifica per aprire l’app.

Questo codice si basa sull’implementazione del tracciamento delle impression dei clic. Con l’impostazione dell’intento, ora devi inviare nuovamente le informazioni di tracciamento ad Adobe Campaign. In questo caso, la visualizzazione Android(Activity) che ha attivato la notifica verrà aperta o portata in primo piano come risultato del clic dell'utente. L'oggetto intento in Activity contiene i dati di notifica che possono essere utilizzati per tenere traccia dell'apertura.

MainActivity.java (estende 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 need to 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);
        }
    }
}

Per 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()
    }
}

In questa pagina