Implementar el seguimiento de la interacción de notificaciones de inserción
Para obtener más información sobre el enfoque general para configurar notificaciones de inserción en Customer Insights - Journeys, visite la descripción general de la configuración de notificaciones de inserción.
Para habilitar las notificaciones automáticas en Customer Insights - Journeys, debe completar los siguientes pasos:
- Configuración de notificación de inserción de aplicación
- Asignación de usuarios para notificaciones de inserción
- Registro de dispositivo para notificaciones de inserción
- Recibir notificaciones de inserción en dispositivos
- Informes de interacciones de notificaciones de inserción
Para informar sobre las tasas de apertura, la aplicación debe enviar estos datos a Customer Insights - Journeys.
Importante
Para realizar un seguimiento de los enlaces que los destinatarios abren en las notificaciones, debe recopilar el consentimiento de seguimiento del cliente. Obtenga más información sobre las estrategias para recopilar el consentimiento del cliente en Customer Insights - Journeys: Descripción general de la gestión del consentimiento
Enviar eventos a Customer Insights - Journeys
URL de solicitud:
POST {PublicEndpoint}api/v1.0/orgs/<orgId>/pushdatareceiver/events
{
"TrackingId": "00000000-0000-0000-0000-000000000000",
"DeviceToken": "%DeviceToken",
"PushNotificationStatus": 1
}
Devoluciones: 202 si la solicitud es correcta, 400 de lo contrario
Nombre | Descripción |
---|---|
TrackingId | Cada notificación tiene un identificador de seguimiento en sus datos. Este identificador debe enviarse para el seguimiento de eventos. |
DeviceToken | Token único para el dispositivo móvil que registra el evento. |
PushNotificationStatus | Código de estado del evento. '1' devuelto para el evento Abierto. |
orgId | Identificador de la organización Customer Insights - Journeys. |
Código swift de muestra para enviar los eventos en 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()
}
Código Java de muestra para enviar los eventos en Android
Parte 1: Generar la carga
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);
}
Parte 2: HttpClient para enviar el evento al servidor
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);
}
});