Server-to-Server - 모바일 앱 S2S 가이드

개요

이 가이드는 공유 S2S 메커니즘 위에 더해지는 모바일 전용 어트리뷰션 신호, 즉 Apple Search Ads, Google Play 및 Meta 설치 리퍼러, 앱 삭제 추적, iOS 설치 영수증을 다룹니다. 세션과 이벤트를 server-to-server 방식으로 리포트하는 iOS 및 Android 앱 연동에 적용됩니다.

시작하기 전에: 이 기능들은 공유 S2S 요청 흐름을 기반으로 합니다. 핵심 개념은 S2S Fundamentals 허브를 참고하고, 인증 및 공통 파라미터는 SESSION 엔드포인트 레퍼런스EVENT 엔드포인트 레퍼런스를 참고하세요.

관련 모바일 가이드: 캠페인에서 앱으로 사용자를 라우팅하려면 S2S를 통한 딥 링크 및 지연 딥 링크에 대한 딥 링크 가이드를 참조하세요.


Apple Search Ads 어트리뷰션

iOS Search Ads 연동

Apple Search Ads는 Self-Attributing Network(SAN)로, Apple 프레임워크를 통한 플랫폼별 어트리뷰션 구현이 필요합니다.

프레임워크 지원:

  • AdServices (iOS 14.3 이상): AdServices 프레임워크. 현재 권장되는 연동 방식입니다.
  • iAd (iOS 14.2 이하): iAd 프레임워크. Apple에서 지원 중단된 레거시 프레임워크로, 신규 연동에는 권장되지 않습니다.

전체 가이드: Apple Search Ads 연동 문서


AdServices 프레임워크 구현

iOS 14.3 이상에서 AdServices 프레임워크를 통해 어트리뷰션 토큰을 가져와 전송합니다.

1단계: 어트리뷰션 토큰 가져오기

Objective-C
#import <AdServices/AdServices.h>

NSError *error = nil;
Class AAAttributionClass = NSClassFromString(@"AAAttribution");
if (AAAttributionClass) {
    NSString *attributionToken = [AAAttributionClass attributionTokenWithError:&error];
    if (!error && attributionToken) {
        // Handle attributionToken
    }
}

토큰 특성:

  • 기기에서 생성됩니다
  • 5분간 캐시됩니다—만료 후 attributionToken() 을 호출하면 새 토큰이 생성됩니다
  • 24시간 동안 유효합니다

2단계: Singular로 전송

토큰을 URL 인코딩하여 모든 설치 및 재설치 후 첫 세션에서 SESSION 엔드포인트 attribution_token 파라미터로 추가합니다.


Google Play 설치 리퍼러

Android 설치 어트리뷰션

Google Play 설치 리퍼러는 가장 정확한 Android 설치 어트리뷰션을 제공하며, Play Store에 도달하기 전 사용자 출처에 대한 정보를 포함합니다.

필수 대상:

자세한 정보: Google Install Referrer 문서

구현 단계:

  1. 첫 앱 실행 시 Play Install Referrer API 를 사용하여 설치 리퍼러를 가져옵니다
  2. 필수 속성이 포함된 install_ref JSON 파라미터를 포함하여 SESSION 엔드포인트 를 통해 세션을 리포트합니다

install_ref 속성:

파라미터 세부 정보
referrer

Play Install Referrer API의 리퍼러 값(JSON 객체—문자열로 인코딩)

referrer_source

service로 지정

clickTimestampSeconds

API의 클릭 타임스탬프(예: 1550420123)

installBeginTimestampSeconds

API의 설치 시작 시간

current_device_time

현재 기기 시간(밀리초 단위, 예: 1550420454906)


Meta 설치 리퍼러

Facebook 어트리뷰션 강화

2025년 6월 18일부로: Meta의 Advanced Mobile Measurement (AMM) 은 Meta 설치 리퍼러 구현의 필요성을 없앱니다. AMM이 활성화된 경우 권장하지 않습니다.

Meta Referrer는 Android 전용 측정 솔루션으로, Google Play 설치 리퍼러와 Meta 설치 리퍼러 기술을 결합하여 앱 설치에 대한 세분화된 유저 레벨 어트리뷰션 데이터를 제공합니다.

자세히 알아보기: Meta Referrer FAQ

구현 단계:

  1. 첫 앱 실행 시 Meta 문서 에 따라 Meta 설치 리퍼러를 가져옵니다
  2. 필수 속성이 포함된 meta_ref JSON 파라미터를 포함하여 SESSION 엔드포인트 를 통해 세션을 리포트합니다

meta_ref 속성:

파라미터 세부 정보
is_ct

Meta 설치 리퍼러의 is_ct(0 또는 1)

install_referrer

Meta 설치 리퍼러의 install_referrer

actual_timestamp

Meta 설치 리퍼러의 actual_timestamp(예: 1693978124)


앱 삭제 추적

사일런트 푸시 알림 설정

모든 세션 알림과 함께 푸시 토큰을 전송하여 기기의 사일런트 푸시 알림을 사용해 앱 삭제를 추적합니다.

설정 요구사항:

  1. 플랫폼별 앱 삭제 추적 설정을 따르세요:
  2. 플랫폼별 토큰을 SESSION 요청에 추가하세요:

iOS 설치 영수증

영수증 검증

iOS 세션을 리포트할 때 iOS 설치 영수증을 install_receipt 파라미터로 전달합니다.

Swift
import Foundation
import StoreKit

class ReceiptManager {
    static func getInstallReceipt() -> String? {
        if #available(iOS 18.0, *) {
            let semaphore = DispatchSemaphore(value: 0)
            var result: String?

            Task {
                do {
                    let transaction = try await AppTransaction.shared
                    result = transaction.jwsRepresentation
                    semaphore.signal()
                } catch {
                    debugPrint("Failed to get app transaction: \(error.localizedDescription)")
                    semaphore.signal()
                }
            }

            semaphore.wait()
            return result

        } else {
            guard let receiptURL = Bundle.main.appStoreReceiptURL else {
                debugPrint("Receipt URL not found")
                return nil
            }

            do {
                let receiptData = try Data(contentsOf: receiptURL, options: .uncached)
                return receiptData.base64EncodedString(options: [])
            } catch {
                debugPrint("Failed to read receipt: \(error.localizedDescription)")
                return nil
            }
        }
    }
}