Dela via


Implementera interaktionsspårning för push-meddelanden

Om du vill ha mer information om den övergripande metoden för att konfigurera push-meddelanden i Customer Insights - Journeys, besök översikt över konfiguration av push-meddelande.

Om du vill aktivera push-meddelanden i Customer Insights - Journeys måste du utföra följande steg:

  1. Appkonfiguration för push-meddelanden
  2. Användarmappning för push-meddelanden
  3. Enhetsregistrering för push-meddelanden
  4. Ta emot push-meddelanden på enheter
  5. Interaktionsrapportering för push-meddelanden

För att kunna rapportera öppna priser måste programmet skicka dessa data tillbaka till Customer Insights - Journeys.

Viktigt

Om du vill spåra länkar som mottagarna öppnar i aviseringar måste du samla in samtycke till kundspårning. Läs mer om olika sätt att samla in kundgodkännande i Customer Insights - Journeys: Översikt över godkännandehantering

Skicka händelser till Customer Insights - Journeys

Begär URL:

POST {PublicEndpoint}api/v1.0/orgs/<orgId>/pushdatareceiver/events
{ 

    "TrackingId": "00000000-0000-0000-0000-000000000000", 
    "DeviceToken": "%DeviceToken", 
    "PushNotificationStatus":  1

} 

Returer: 202 om begäran är korrekt, 400 annars

Namn Beskrivning
TrackingId Varje meddelande har en spårnings-ID i sina data. Den här identifieraren måste skickas för händelsespårning.
DeviceToken Unik token för den mobila enhet som registrerar händelsen.
PushNotificationStatus Statuskod för händelsen. "1" returneras för Öppnad händelse.
orgId Identifierare för Customer Insights - Journeys organisation.

Exempel Swift-kod som kan skickas till händelserna i iOS

func createInteraction(typeInteraction: Int, trackingId: String) {
    if !trackingId.isEmpty || trackingId == "00000000-0000-0000-0000-000000000000" {
        return
    }
    let orgId = UserDefaults.standard.string(forKey: "organizationId2")
    let endP = UserDefaults.standard.string(forKey: "endpoint2")
    if orgId == nil || endP == nil {
        return
    }
    let url = URL(
        string: String(
            format: "https://%@/api/v1.0/orgs/%@/pushdatareceiver/events", endP ?? "", orgId ?? ""))!
    let session = URLSession.shared
    // now create the URLRequest object using the url object
    var request = URLRequest(url: url)
    request.httpMethod = "POST"  //set http method as POST
    // add headers for the request
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")  // change as per server requirements
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    do {
        // convert parameters to Data and assign dictionary to httpBody of request
        let deviceToken = UserDefaults.standard.string(forKey: "deviceToken")
        let jsonBodyDict = [
            "PushNotificationStatus": String(typeInteraction), "DeviceToken": deviceToken,
            "TrackingId": trackingId,
        ]
        request.httpBody = try JSONSerialization.data(
            withJSONObject: jsonBodyDict, options: .prettyPrinted)
    } catch let error {
        print(error.localizedDescription)
        return
    }
    // create dataTask using the session object to send data to the server
    let task = session.dataTask(with: request) { data, response, error in
        if let error = error {
            print("Post Request Error: \(error.localizedDescription)")
            return
        }
        // ensure there is valid response code returned from this HTTP response
        guard let ttpResponse = response as? HTTPURLResponse,
            (200...299).contains(httpResponse.statusCode)
        else {
            print("Invalid Response received from the server")
            return
        }
        print("Interaction creation successful.")
    }
    // perform the task
    task.resume()
}


Exempel Java-kod som kan skickas till händelserna i Android

Del 1: Generera nyttolasten

EventTrackingContract: 
public String toJsonString() { 
        JSONObject jsonObject = new JSONObject(); 
        try { 
            jsonObject.put("PushNotificationStatus", mEvent.toString()); 
            jsonObject.put("DeviceToken", mDeviceToken); 

            jsonObject.put("TrackingId", trackingId); 
        } catch (JSONException e) { 
            Log.d(LOG_TAG, "Json exception while creating event tracking contract: " + e.getMessage()); 
        } 
        return jsonObject.toString(); 
    } 
 
EventTypeEnum: 
public enum EventType {
    Opened(1); 
}

Del 2: HttpClient för att skicka händelsen till servern

AsyncTask.execute(new Runnable() { 
            @Override 
            public void run() { 
                SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); 
                String hostname = sharedPreferences.getString(HOST_NAME, ""); 
                String organizationId = sharedPreferences.getString(ORGANIZATION_ID, ""); 
                final HashMap<String, String> headers = new HashMap<>(); 
                headers.put("Content-Type", "application/json"); 
                final EventTrackingContract eventTrackingContract = new EventTrackingContract(event); 
                Log.d(TAG, eventTrackingContract.toJsonString()); 
                String response = HttpClientWrapper.request(String.format("https://%s/api/v1.0/orgs/%s/pushdatareceiver/events" 

, hostname, organizationId, trackingId), 
                        "POST", headers, eventTrackingContract.toJsonString()); 
                Log.d(TAG, response); 
            } 
        });