Interaktionsverfolgung für Pushbenachrichtigungen umsetzen
Um mehr über den grundlegenden Ansatz zum Einrichten von Pushbenachrichtigungen in Customer Insights - Journeys zu erfahren, gehen Sie zu Übersicht über die Einrichtung von Pushbenachrichtigungen.
Um Pushbenachrichtigungen in Customer Insights - Journeys zu aktivieren, müssen Sie die folgenden Schritte ausführen:
- Anwendungskonfiguration für Pushbenachrichtigungen
- Benutzerzuordnung für Pushbenachrichtigungen
- Geräteregistrierung für Pushbenachrichtigungen
- Pushbenachrichtigungen auf Geräten erhalten
- Interaktionsberichte für Pushbenachrichtigungen
Um über Öffnungsraten zu berichten, muss die Anwendung diese Daten an Customer Insights - Journeys zurücksenden.
Wichtig
Um Links nachzuverfolgen, die Empfänger in Benachrichtigungen öffnen, müssen Sie die Zustimmung des Kunden zur Nachverfolgung einholen. Erfahren Sie mehr über Strategien zum Einholen der Kundeneinwilligung in Customer Insights - Journeys: Überblick über die Einwilligungsverwaltung
Ereignisse an Customer Insights - Journeys senden
Anforderungs-URL:
POST {PublicEndpoint}api/v1.0/orgs/<orgId>/pushdatareceiver/events
{
"TrackingId": "00000000-0000-0000-0000-000000000000",
"DeviceToken": "%DeviceToken",
"PushNotificationStatus": 1
}
Gibt zurück: 202, wenn die bereitgestellte Anforderung korrekt ist, sonst 400
Name des Dataflows | Eigenschaft |
---|---|
TrackingId | Jede Benachrichtigung enthält in ihren Daten eine Nachverfolgungs-ID. Diese Kennung muss zur Ereignisnachverfolgung gesendet werden. |
DeviceToken | Eindeutiger Token für das mobile Gerät, welches das Ereignis registriert. |
PushNotificationStatus | Statuscode für das Ereignis. „1“ wurde für das Ereignis „Geöffnet“ zurückgegeben. |
orgId | Kennung der Customer Insights - Journeys-Organisation. |
Hier ist ein Swift-Code zum Senden der Ereignisse in 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()
}
Hier ist ein Jave-Code zum Senden der Ereignisse in Android
Teil 1: Generieren Sie die Nutzlast
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);
}
Teil 2: HttpClient zum Senden des Events an den Server
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);
}
});