iOS14 업데이트 대응 안내 (3) : SkAdNetwork 리포팅 포스트백 설정
팔로우
iOS 14의 ATT정책 대응에 대한 상세내용은 iOS14 업데이트 대응 안내 시리즈를 참고 바랍니다.
iOS14 대응, SkAdNetwork 리포팅 포스트백
SkAdNetwork를 사용하는 캠페인은 디파이너리와 같은 MMP가 아닌 애플이 직접 어트리뷰션을 측정하게 됩니다. 플랫폼 차원에서 제공되는 어트리뷰션이기 때문에 가장 정확도가 높은 어트리뷰션이라고 할 수 있습니다.
SkAdNetwork 캠페인 프로세스
- 유저가 캠페인을 통해 앱을 인스톨
- 앱 실행
- iOS가 앱 설치에 기여한 애드네트워크에게 성과 포스트백을 전송(최대 24~48시간 지연)
- 성과 포스트백에는 기기를 식별할 수 있는 정보는 포함되지 않음
- 애드네트워크는 3)에서 받은 포스트백 데이터를 그대로 디파이너리에 전달
- 디파이너리는 SkAdNetwork 리포팅을 구성
SkAdNetwork 성과 포스트백
SkAdNetwork는 앱 인스톨이 발생하면, 인스톨에 기여한 애드네트워크에게 직접 성과 포스트백을 전송합니다.
애드네트워크는 이 포스트백을 이용하여 자체적으로 리포트를 구성할 수 있습니다.
하지만 광고주는 운영 중인 각각의 애드네트워크에 접근하여 리포트를 확인해야 하는 번거로움이 있고, 이것을 애드테크 주요 구성원 모두에게 비효율을 발생시키게 될 것입니다.
디파이너리 SkAdNetwork 리포팅 포스트백
이와 같은 비효율을 줄이기 위해서 디파이너리는 SkAdNetwork의 흩어진 리포트를 통합할 수 있는 솔루션을 제공합니다.
애드네트워크는 간단하게 SkAdNetwork로부터 수신한 성과 포스트백을 디파이너리에 전달해주시면 됩니다.
디파이너리는 각 애드네트워크에 제공해드린 파트너 콘솔(이동하기)을 통해 리포팅 포스트백 프로토콜을 안내 드리고 있습니다.
SkAdNetwork 설정
1. 파트너콘솔의 Settings > SkAdNetwork Settings 패널로 이동합니다. (좌측 대메뉴의 SkAdNetwork를 통해서도 이동 가능)
2. SkAdNetwork 포스트백을 활성화합니다. 그리고 프로토콜에서 사용할 토큰을 생성합니다.
생성된 토큰은 프로토콜의 Header에 포함되어야 합니다.
데이터 전달
SkAdNetwork에서 수신한 Json 데이터를 Body에 담아서 전달합니다.
[sample request - Basic]
POST - https://event.adbrix.io/api/v1/skadn/postback
Header
{
"ABX-TOKEN" : "hsL1rk37pYXHaznL0Axd2xjOHn7%2b3EzB4gDXfa0wF8dHKLLJyccFC0T3BhPFRnxW2yEvUWak4LQeQhuAZAywDVsvjgNO95tWXkVbJd2DgzyZsb6A0IKzqpCcAEK%2bvFJz4GQ6gKMwfNbwdEcyt3qlMSPpvS%2bGtpzj6UZWy7j0ucVK0v3wMsBjt4IrYLHPEM6skrLLrROMZukkm2PTC3E1v5Dt9wdCk9gah46p16UWoDQ%3d"
}
Body
{
"version" : "2.2",
"ad-network-id" : "com.example",
"campaign-id" : 42,
"transaction-id" : "6aafb7a5-0170-41b5-bbe4-fe71dedf1e28",
"app-id" : 525463029,
"attribution-signature" : "MEYCIQDTuQ1Z4Tpy9D3aEKbxLl5J5iKiTumcqZikuY/AOD2U7QIhAJAaiAv89AoquHXJffcieEQXdWHpcV8ZgbKN0EwV9/sY",
"redownload": true,
"source-app-id": 1234567891,
"fidelity-type": 1,
"conversion-value": 20
}
만약 SkAdNetwork 제공 기본 데이터 외의 추가 파라미터를 전달하고자 한다면 Custom field 를 자유롭게 추가할 수 있습니다.
[sample request - Advanced]
POST - https://event.adbrix.io/api/v1/skadn/postback
Header
{
"ABX-TOKEN" : "hsL1rk37pYXHaznL0Axd2xjOHn7%2b3EzB4gDXfa0wF8dHKLLJyccFC0T3BhPFRnxW2yEvUWak4LQeQhuAZAywDVsvjgNO95tWXkVbJd2DgzyZsb6A0IKzqpCcAEK%2bvFJz4GQ6gKMwfNbwdEcyt3qlMSPpvS%2bGtpzj6UZWy7j0ucVK0v3wMsBjt4IrYLHPEM6skrLLrROMZukkm2PTC3E1v5Dt9wdCk9gah46p16UWoDQ%3d"
}
Body
{
"version" : "2.2",
"ad-network-id" : "com.example",
"campaign-id" : 42,
"transaction-id" : "6aafb7a5-0170-41b5-bbe4-fe71dedf1e28",
"app-id" : 525463029,
"attribution-signature" : "MEYCIQDTuQ1Z4Tpy9D3aEKbxLl5J5iKiTumcqZikuY/AOD2U7QIhAJAaiAv89AoquHXJffcieEQXdWHpcV8ZgbKN0EwV9/sY",
"redownload": true,
"source-app-id": 1234567891,
"fidelity-type": 1,
"conversion-value": 20,
"custom-field" : {
"custom-string" : "my_data",
"custom-bool" : false,
"custom-long" : 10
}
}
Response
프로토콜 호출에 대해서 다음과 같은 응답코드와 메시지를 제공합니다.
code | message | desc |
200 | ok | 정상 처리 |
400 | bad request | 비정상 요청 |
404 | not found | endpoint를 찾을 수 없음 |