Compartilhar via


Implementar acompanhamento de interações de notificação por push

Para saber mais sobre a abordagem geral para configurar notificações por push no Customer Insights - Journeys, visite a visão geral de configuração da notificação por push.

Para habilitar notificações por push no Customer Insights - Journeys, você precisa concluir as seguintes etapas:

  1. Configuração do aplicativo de notificação por push
  2. Mapeamento de usuário para notificações por push
  3. Registro do dispositivo para notificações por push
  4. Recebimento de notificações por push em dispositivos
  5. Relatório de interação para notificações por push

Para gerar relatórios sobre taxas de abertura, o aplicativo precisa reenviar esses dados para o Customer Insights - Journeys.

Importante

Para rastrear os links que os destinatários abrem nas notificações, você deve coletar o consentimento de rastreamento do cliente. Saiba mais sobre estratégias para obter consentimento do cliente no Customer Insights - Journeys: Visão geral do gerenciamento de consentimento

Enviar eventos para o Customer Insights - Journeys

URL da solicitação:

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

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

} 

Retorna: 202 se a solicitação estiver correta; do contrário, 400

Nome Descrição
TrackingId Toda notificação tem um identificador de rastreamento nos dados. Esse identificador precisa ser enviado para o rastreamento do evento.
DeviceToken Token exclusivo para o dispositivo móvel que registra o evento.
PushNotificationStatus Código de status do evento. "1" retornado para o evento Opened.
orgId Identificador da organização do Customer Insights - Journeys.

Código Swift de amostra para enviar eventos no 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 amostra para enviar eventos no Android

Parte 1: Gerar a 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 o envio do evento para o 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); 
            } 
        });