연동 테스트

시작하기 전에

본 문서의 테스트를 성공적으로 완료하려면 다음을 수행해야 합니다:

iOS SDK 연동 테스트

테스트는 다음과 같이 구성됩니다:

  1. 광고 클릭 시뮬레이션 및 앱 인스톨:
    • ATT를 구현하는 경우 다음 지침을 따르십시오.
    • ATT를 구현하지 않는 경우 다음 지침을 따르십시오.
  2. 인스톨의 전환 데이터 검사.

Apps that implement ATT

앱에서 앱 추적 투명성(ATT)을 구현하는 경우 다음 지침을 따르십시오.
다음 조건이 충족되면 ID 매칭을 통해 어트리뷰션이 발생합니다:

  • The attribution link contains the idfa parameter
  • ATT가 구현되고:
    1. requestTrackingAuthorization is called before start (by utilizing waitForATTUserAuthorization)
    2. 사용자 동의가 제공됩니다.

1단계: 광고 클릭 시뮬레이션
어트리뷰션 링크를 통해 광고 클릭을 시뮬레이션합니다. 어트리뷰션 링크를 다음과 같이 구성합니다:

https://app.appsflyer.com/<app_id>?pid=<media_source>
&idfa=<registered_device_idfa>

장소:

  • app_id is your AppsFlyer app ID (including id suffix)
  • pid 인스톨에 어트리뷰트해야 하는 미디어 소스입니다.
  • idfa 등록된 기기의 IDFA입니다.


If your app ID is id123456789, the attribution link might look like this:

https://app.appsflyer.com/id123456789?pid=conversionTest1&idfa=1A2B3C4D-9128-4597-1234- 
04E23D654321

2단계: 앱 인스톨
디버그 모드를 활성화하고 등록된 테스트 기기에 앱을 인스톨합니다.

3단계: 테스트 실행
전환 데이터 검사를 진행합니다.

Apps that don't implement ATT

1단계: 광고 클릭 시뮬레이션
어트리뷰션 링크를 통해 광고 클릭을 시뮬레이션합니다. 어트리뷰션 링크를 다음과 같이 구성합니다:

https://app.appsflyer.com/<app_id>?pid=<media_source>

장소:

  • app_id is your AppsFlyer app ID (including id prefix)
  • pid 인스톨에 어트리뷰트해야 하는 미디어 소스입니다.


If your app ID is id123456789, the attribution link might look like this:

https://app.appsflyer.com/id123456789?pid=conversionTest1

2단계: 앱 인스톨
디버그 모드를 활성화하고 모든 기기에 앱을 설치합니다. 기기를 등록하는 데 사용된 IDFA를 사용할 수 없으므로 이 경우 기기 등록이 영향을 미치지 않습니다.

3단계: 테스트 실행
전환 데이터 검사를 진행합니다.

👍

종종 어트리뷰션 링크를 사용한 테스트는 두 번 이상 수행됩니다. 그런 이유로 테스트할 "버전"에 어트리뷰션 파라미터 중 하나를 사용하는 것이 좋습니다. 그러면 어떤 링크가 어떤 전환을 유발했는지 더 쉽게 이해할 수 있습니다.

In the above example, the value of pid is conversionTest1. In consecutive tests, increment the value of pid to conversionTest2, conversionTest3, and so on.

Inspect conversion data

광고 클릭을 시뮬레이션하고 앱을 인스톨한 후 다음 단계에 따라 인스톨의 전환 데이터를 검사합니다.

1단계: 인스톨 UID 검색
Once the app is installed, In the Xcode terminal, search for conversions.appsflyer. Look for the uid parameter and copy its value.

24522452

2단계: 전환 데이터 검사
전환 데이터 테스트 API로 이동하여 다음 필수 필드를 입력합니다:

  1. app-id: 사용자의 앱 ID
  2. device_id: paste the value of uid from step 1.
  3. af_request_epoch_ms - Current epoch timestamp. You can get it here
  4. The af_sig created by concatenating the values of the following fields:
    Concatenate the value of af_request_epoch_ms with device_id and app_id, separated an invisible character \u2063.
    (E.g. 1661969117203 1591184059153-1591377216180180185 com.zzkko)

    Note: for iOS make sure the app id is a full one, i.e. starts with id

The HMAC is generated using SHA256 and uses the DevKey as the signature’s secret key.
To retrieve the DevKey, in the AppsFlyer dashboard, go Configuration > App Settings.

You can find here an HMAC calculator to assist in calculating this token.

그런 다음 시도하기!를 클릭하여 테스트를 실행하십시오.

예상 결과
ATT가 구현되고 사용자 동의가 제공된 경우 결과는 다음과 유사한 200 응답입니다(가독성을 위해 잘림):

{
    ...
    "af_status" = "Non-organic";
    ...
    "match_type" = id_matching;
    "media_source" = conversionTest1;
    ...
}

그렇지 않으면 어트리뷰션이 확률적으로 발생하고 결과는 다음과 유사한 200 응답입니다(가독성을 위해 잘림):

{
    ...
    "af_status" = "Non-organic";
    ...
    "match_type" = probabilistic;
    "media_source" = conversionTest1;
    ...
}

인스톨이 어트리뷰트되지 않은 경우 결과는 다음 페이로드가 포함된 200 응답입니다:

{
    "af_message" = "organic install";
    "af_status" = Organic;
    "install_time" = "2021-08-23 06:59:51.194";
    "is_first_launch" = 1;
}

📘

참고

해당 인스톨이 대시보드에 표시될 때까지 30여 분 정도 시간이 소요될 수 있습니다.

iOS SDK 연동 문제 해결

앱 설치 및 이벤트가 기록되지 않습니다

앱 설치 및 이벤트가 기록되지 않는 몇 가지 이유가 있을 수 있습니다.

  • 잘못된 앱 ID 형식: 잘못된 형식으로 앱 ID를 지정하면 앱 설치 및 이벤트가 기록되지 않습니다. Delegate 파일에서 앱 ID를 설정할 때, 앱 ID가 숫자로만 구성되어 있는지 확인하십시오. 앱 ID 형식이 잘못된 경우 로그에 다음 오류가 표시됩니다:

    \[ERROR\] AppsFlyer: -\[AppsFlyerTracker validateAppID\] 
        AppsFlyer Error: appleAppID should be a number!
    
  • 잘못된 앱 ID: 계정에 존재하지 않는 앱 ID를 지정하면, 앱 인스톨 및 이벤트가 기록되지 않습니다. 로그에는 다음 오류가 표시됩니다:

    AppsFlyer: -[AppsFlyerHTTPClient sendRequestEventToServer:isRequestFromCache:appID:isDebug:
            completionHandler:]_block_invoke sent information to server, status = 404
    

The 404 error indicates that the SDK is unable to find the app in your account.

  • 잘못된 Dev Key: 잘못된 dev key ID를 지정하면 앱 인스톨 및 이벤트가 기록되지 않습니다. 로그에는 다음 오류가 표시됩니다:

    AppsFlyer: -[AppsFlyerHTTPClient 
    sendRequestEventToServer:isRequestFromCache:appID:isDebug:completionHandler:]
            _block_invoke sent information to server, status = 400
    

    400 오류는 SDK가 앱 설치 및 이벤트 기록 요청을 인증할 수 없음을 나타냅니다. Dev key가 올바른지 확인하십시오. 또한, dev key에 영숫자만 포함되어 있는지 확인하십시오.

    올바른 예:

    [AppsFlyerLib shared].appleAppID = @"340954503";
    

    잘못된 예:

    [AppsFlyerLib shared].appleAppID = @"id340954503";
    

    잘못된 예:

    [AppsFlyerLib shared].appleAppID = @"com.appslyer.sampleapp";
    

앱 ID와 dev key가 정확하지만 앱 설치가 기록되지 않습니다

시나리오
앱에 올바른 앱 ID와 dev key가 포함되어 있지만 앱 설치가 기록되지 않습니다.

가능한 이유
The SDK is not initiated correctly. Make sure to call the start method in applicationDidBecomeActive:

    - (void)applicationDidBecomeActive:(UIApplication *)application { 
        [[AppsFlyerLib shared] start]; 
        }
    func applicationDidBecomeActive(application: UIApplication) { 
        AppsFlyerLib.shared().start() 
    }

"AppsFlyer dev key missing or empty. aborting" 라고 로그에 표시됩니다

시나리오
로그에서 인스톨과 인앱 이벤트를 확인해보려고 합니다. "AppsFlyer dev key missing or empty. Aborting" 이라고 로그에 표시됩니다

가능한 이유

The dev key is not set. Make sure to set it in appDelegate in the didFinishLaunchingWithOptions method:

[AppsFlyerLib shared].appsFlyerDevKey = @"<AF_DEV_KEY>";
AppsFlyerLib.shared().appsFlyerDevKey = "<AF_DEV_KEY>"

항상 오가닉으로 어트리뷰트 되는 인스톨

시나리오
어트리뷰션 링크를 사용하여 어트리뷰션을 테스트하려고 합니다. SDK conversion listerner를 구현했지만 로그에서는 항상 설치가 오가닉으로 표시됩니다. 게다가, 논오가닉 인스톨은 대시보드에 전혀 기록되지 않았습니다.

가능한 이유

  1. 사용하는 어트리뷰션 링크가 잘못되었습니다. 어트리뷰션 링크에 대한 가이드를 참조하십시오.
  2. 테스트 중인 기기가 등록되어 있는지 확인하십시오.

수익이 제대로 기록되지 않았습니다

시나리오
수익 데이터가 포함된 인앱 이벤트를 테스트하려고 합니다. 이벤트는 대시보드에 표시되지만 수익은 기록되지 않습니다

가능한 이유
수익 파라미터가 올바른 형식이 아닙니다. 수익 값은 어떤 표시 형식도 지정되지 않아야 합니다. 쉼표 구분 기호, 환율 기호, 또는 문자가 포함되면 안됩니다. 예를 들어, 수익 값은 1234.56과 같은 형태가 되어야 합니다.

앱 설치 또는 이벤트 기록시 404 응답이 표시됩니다

시나리오
인스톨과 인앱 이벤트가 정확한 미디어소스에 어트리뷰트되는지 확인하기 위해 테스트하려고 합니다. 그러나 앱 설치와 인앱 이벤트의 경우 모두 404 응답이 표시됩니다. 앱 설치 또는 인앱 이벤트 아무것도 대시보드에 표시되지 않습니다.

가능한 이유
404 응답은 앱 ID가 잘못되었음을 나타냅니다. 인스톨 및 이벤트가 기록되지 않음 항목을 참조하십시오.

앱 설치 또는 이벤트 기록시 400 응답이 표시됩니다

시나리오
로그에서 인앱 이벤트를 테스트해보려고 합니다. 이벤트를 트리거하면 로그에 400 응답이 표시됩니다.

가능한 이유
이것은 dev key에 문제가 있음을 나타낼 수 있습니다. Dev key가 올바른지 확인하십시오. 또한, dev key에 영숫자만 포함되어 있는지 확인하십시오. 인스톨 및 이벤트가 기록되지 않음 항목을 참조하십시오.

앱 설치 또는 이벤트 기록시 response 403이 표시됩니다.

시나리오
로그에서 인스톨과 기타 전환 이벤트를 확인하고자 합니다. 이러한 이벤트를 트리거하는 경우 로그에 response 403 (forbidden)이 표시됩니다.

가능한 이유
This might be because you have the Zero package, which does not include attribution data; only data on clicks and impressions. To start receiving attribution data, learn more about the different AppsFlyer packages, and update as needed. You can also contact our customer engagement team at [email protected] if you have questions about our packages.

iOS 디버그 앱 만들기

선택 가능
Xcode의 컴파일 설정 기능을 활용하여 사용하기 쉬운 디버그 앱 을 설정할 수 있습니다. Xcode의 활성 컴파일 조건을 활용하여 디버그 앱과 프로덕션 앱 간에 전환할 수 있습니다.

📘

참고

프로덕션 데이터와 테스트 트래픽을 혼합해도 상관 없다면 연동 테스트로 건너뛸 수 있습니다. 모든 테스트는 프로덕션 및 디버그 앱 모두에 대해 수행할 수 있습니다.

This is achieved by configuring a User-Defined Setting in your project's Build Settings and exposing it via an info.plist property.

1단계: 앱스플라이어에 디버그 앱 추가
보류 중인 새 iOS 앱을 앱스플라이어에 추가하거나 대시보드 액세스 권한이 있는 팀원에게 추가를 요청하십시오. 사용 가능한 앱 ID를 선택하세요. 이는 3단계에서 필요합니다.

2단계: 사용자 정의 설정 추가

  1. Xcode의 파일 탐색기 보기에서 프로젝트 루트를 선택하고 빌드 설정(Build Settings)으로 이동합니다.
  2. Click + in the toolbar and select Add User-Defined Setting. In this case, we name it AF_APP_ID.
  3. 새로 생성된 사용자 정의 설정을 확장합니다:
    • 디버그 조건부 설정을 테스트 앱의 앱 ID로 설정(1단계에서 언급)
    • 출시 조건부 설정을 프로덕션 앱의 앱 ID로 설정합니다.
987987

3단계: info.plist를 통해 앱 ID 노출
Go to the project's info.plist and add a new property (called AFAppID in this case). Set its value to $(AF_APP_ID) (based on the User-Defined Setting name in step 2).

971971

4단계: 앱 ID 검색 및 설정
To access and use app ID during SDK initialization, add the following code to didFinishLaunchingWithOptions in your AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // ...
    guard let appID : String = Bundle.main.object(forInfoDictionaryKey: "AFAppID") as? String else {
        fatalError("Cannot find app ID")
    }
    AppsFlyerLib.shared().appleAppID = appID
    // ...
    return true
}

5단계: 디버그 빌드 설정을 사용하여 앱 실행
활성 빌드 설정을 변경하려면:

  1. 제품 > 스키마 > 스키마 편집...으로 이동합니다.
  2. 실행을 선택하고 필요에 따라 빌드 설정디버그 또는 출시로 변경합니다.
945945

이제 디버그 설정을 사용하여 앱을 빌드할 때 Xcode는 2단계에서 설정한 디버그 앱 ID를 사용합니다.