다음을 통해 공유


푸시 알림 상호 작용 추적 구현

Customer Insights - Journeys에서 푸시 알림을 설정하는 전반적인 접근 방식에 대해 자세히 알아보려면 푸시 알림 설정 개요를 방문하세요.

Customer Insights - Journeys에서 푸시 알림을 활성화하려면 다음 단계를 완료해야 합니다.

  1. 푸시 알림 애플리케이션 구성
  2. 푸시 알림을 위한 사용자 매핑
  3. 푸시 알림을 위한 장치 등록
  4. 장치에서 푸시 알림 받기
  5. 푸시 알림에 대한 상호 작용 보고

열어본 비율에 대해 보고하려면 애플리케이션에서 이 데이터를 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 이벤트의 상태 코드입니다. Opened 이벤트에 대해 '1'이 반환되었습니다.
orgId Customer Insights - Journeys 조직의 식별자입니다.

iOS에서 이벤트를 전송하는 샘플 Swift 코드

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


Android에서 이벤트를 전송하는 샘플 Java 코드

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