다음을 통해 공유


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

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

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

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

오픈 비율에 대해 보고하려면 애플리케이션에서 이 데이터를 Customer Insights - Journeys로 다시 보내야 합니다.

중요합니다

수신자가 알림에서 여는 링크를 추적하려면 고객 추적 동의를 수집해야 합니다. Customer Insights - 여정: 동의 관리 개요에서 고객 동의를 수집하기 위한 전략에 대해 자세히 알아보십시오.

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

이름 설명
추적ID 모든 알림에는 데이터에 추적 식별자가 있습니다. 이벤트 추적을 위해 이 식별자를 보내야 합니다.
디바이스토큰 이벤트를 등록하는 모바일 장치에 대한 고유 토큰입니다.
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에서 이벤트를 전송하는 샘플 자바 코드

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