Поделиться через


Реализация отслеживания взаимодействий с push-уведомлениями

Чтобы узнать больше об общем подходе к настройке push-уведомлений в Customer Insights - Journeys, см. обзор настройки push-уведомлений.

Чтобы включить push-уведомления в Customer Insights - Journeys, вам необходимо выполнить следующие шаги:

  1. Конфигурация приложений для push-уведомлений
  2. Сопоставление пользователей для push-уведомлений
  3. Регистрация устройства для push-уведомлений
  4. Получение push-уведомлений на устройствах
  5. Отчетность по взаимодействиям для push-уведомлений

Чтобы составить отчет о коэффициентах открытия, приложению необходимо отправить эти данные обратно в Customer Insights - Journeys.

Важно

Чтобы отслеживать ссылки, которые получатели открывают в уведомлениях, необходимо получить согласие клиента на отслеживание. Узнайте больше о стратегиях сбора согласия клиентов в Customer Insights - Journeys: Обзор управления согласием

Отправка сообщений в Customer Insights - Journeys

Запрос URL-адреса:

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

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

} 

Возвращает: 202, если запрос корректный, в противном случае это будет 400

Полное имя Description
TrackingId Каждое уведомление имеет в своих данных идентификатор отслеживания. Этот идентификатор необходимо отправить для отслеживания событий.
DeviceToken Уникальный токен мобильного устройства, регистрирующего событие.
PushNotificationStatus Код состояния события. '1' возвращается для события «Открыто».
orgId Идентификатор организации Customer Insights - Journeys.

Пример кода Swift для отправки событий в 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()
}


Пример кода Java для отправки событий в Android

Часть 1. Создание полезной нагрузки

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

Часть 2. HttpClient для отправки события на сервер

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