SDK 테스트 및 검증

Singular SDK를 연동했다면 Singular의 SDK 콘솔(설정 > SDK 콘솔)을 사용해서 이벤트와 세션이 Singular에 잘 전달되는지 확인하세요.

 

1단계. SDK 콘솔에 기기 등록

SDK 콘솔 테스트 기기의 광고 ID 확인

Singular Device Assist 앱을 테스트 기기에 설치하여 ID를 확인할 수 있습니다. 다음 링크에서 다운로드 하세요. iOS / Android

SDK 콘솔에 기기 등록

다음 단계에 따라 기기를 등록하세요.

  • Singular UI에서 설정 > SDK 콘솔로 이동합니다.
  • 아무 기기도 추가되지 않았다면 첫 번째 기기 추가를, 추가된 기기가 있다면 기기 추가를 선택합니다.
  • 플랫폼, 키스페이스, ID를 선택한 후 추가를 클릭합니다.
  • "기기 등록 중..."이라는 알림이 나타납니다. 백엔드 시스템에서 기기가 추가될 때까지 잠시 기다려주세요. 기기 이름을 업데이트하면 추후 쉽게 구분할 수 있습니다.
  • 트래킹을 시작하기 전 기기의 아이 마크가 켜진 것을 반드시 확인하세요.

1a단계. 기기 재테스트

Android

이 과정을 통해 기기에 로컬 캐시 데이터가 삭제되므로 “__installReferrer”를 다시 발동할 수 있습니다.

  • 앱을 완전히 종료한 후 실행 중이 아닌 상태임을 확인합니다. (가능한 경우 설정 메뉴에서 강제 중지를 사용합니다.)
  • 알림 윈도나 앱 메뉴에서 톱니바퀴 모양 아이콘을 탭하여 설정 메뉴로 이동합니다.
  • 애플리케이션 으로 이동 후 캐시/데이터를 삭제하려는 앱을 선택합니다. 앱을 길게 누르고 앱 정보를 선택합니다.
  • 저장공간을 선택한 후 데이터 삭제캐시 삭제를 선택합니다.
  • Singular SDK 콘솔을 연 후 잊기 버튼을 눌러서 시스템이 기기의 어트리뷰션 데이터를 지우게 합니다.
  • 기존 테스트를 재개합니다.

참고: Google Play에서 해당 기능을 제공하는 앱을 확인할 수도 있습니다. (예시)

iOS

  • 앱을 닫고 언인스톨합니다.
  • Singular SDK 콘솔을 연 후 잊기 버튼을 눌러서 시스템이 기기의 어트리뷰션 데이터를 지우게 합니다.

2단계. Android의 Google Play Referral 확인

SDK 콘솔에 기기를 등록한 다음 기기에서 앱을 실행한 후 SDK 콘솔에서 “__instalReferrer”가 등장하는 것을 확인합니다. 이 이벤트는 기기가 잘 등록된 것을 의미합니다.

만약 SDK 콘솔에 "__instalReferrer"이 나타나지 않으면 문제 확인을 위해 다음 단계를 따르세요.

문제 해결법

Broadcast Receiver 테스트

주의: 본 테스트 프로세스는 Google Install Referrer를 receiver 인터페이스를 통해 수신하는 이전 방식에만 해당합니다. (receiver interface에 대한 더 많은 정보는 이 곳을 참조하세요).

androidmanifest.xml 파일을 열고 관련 INSTALL_REFERRER listener 클래스를 확인합니다.

다수의 receiver가 있는 경우 제일 위에 가까운 첫 번째 것이 사용됩니다. 다음 예제를 참조하세요.

 

위 사용 예제에서 테스트 앱은 “com.adbrix.MultipleInstallBcastReceiver"를 사용합니다.

테스트 기기에 APK 인스톨

먼저 기기에서 이 링크를 참조하여 Android 개발자 모드를 활성화해야 합니다. 또한 디버깅 모드도 활성화하세요.

다음 명령어를 활용하여 설치합니다. adb install ~/Downloads/com.game_v1.6.apk

SDK 콘솔에서 기기 등록

앱을 먼저 시작하고 다음처럼 INSTALL_REFERRER intent와 함께 명령어를 실행합니다.

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n com.your.app/[class from step 2] --es "referrer" "test_referrer_data"

주의: 패키지 이름은 Singular UI의 앱 페이지에서 확인할 수 있습니다.

“com.app.game” 부분을 정확한 패키지 명으로 변경하세요.

SDK 콘솔에서 해당 이벤트가 확인되는 경우 문제의 원인은 앱을 실행하고 SDK 콘솔에서 이벤트를 확인하기 시작한 타이밍 때문일 가능성이 있습니다.

이 링크에서 이벤트 로그를 추출한 후 “__InstallReferrer” 이벤트를 확인하거나 다음 가이드를 참조하여 기기를 리셋하고 다시 테스트하세요.

이벤트가 나타나지 않는다면 이벤트 로그를 추출하여 확인해보세요. SDK 콘솔에서 기기가 완전히 등록되기 전에 앱이 실행되었을 가능성이 있습니다.

3단계. Apple Search Ads Attribution 확인

Apple Search Ads attribution 확인하려면 다음 단계를 따르세요.

  • 테스트 기기를 SDK 콘솔에 등록합니다. 앱을 이미 열었었다면 위 가이드를 따라 앱을 리셋하세요.
  • SDK 콘솔에서 “__iAd_Attribution__” 이벤트 등장을 확인합니다.

    해당 이벤트가 등장하지 않는다면 SDK 콘솔에 기기가 완전히 등록되기 전에 앱이 열렸을 가능성이 있으므로 이벤트 로그를 추출하여 확인해보세요. 또한 ipa 파일 설치 등을 통한 테스트 환경에서는 확인하기 어렵고 testflight나 simulator에서 제한적으로 확인되므로 자동 트래킹 (iAd.framework) 라이브러리가 추가되었는지 여부만 확인하시는 것으로도 대체할 수 있습니다.

4단계. Session 트래킹 확인

  • 테스트 기기를 SDK 콘솔에 등록합니다.
  • 앱을 실행합니다.
  • 세션 이벤트 등장을 확인합니다.
    해당 이벤트가 등장하지 않는다면 SDK 콘솔에 기기가 완전히 등록되기 전에 앱이 열렸을 가능성이 있으므로 이벤트 로그를 추출하여 확인해보세요.

5단계. 커스텀 유저 ID 확인

  • 테스트 기기를 SDK 콘솔에 등록합니다.
  • 앱을 실행합니다.
  • 앱에서 커스텀 유저 ID를 설정한 액션을 실행합니다.
  • Singular에서 커스텀 유저 ID가 인식되는지 확인하세요.
    만약 커스텀 유저 ID가 나타나지 않는다면, 앱에서 실제 호출된 메서드를 확인해주세요. “setting custom user id”라는 이름으로 Singular SDK 이벤트를 추가하고 커스텀 유저 ID를 설정하여 SDK 콘솔에서 등장하는지 확인해볼 수도 있습니다.

6단계. 딥링크 확인

1. 딥링크 활성화

다음 가이드들(Appendix A: 앱에 딥링크 연동하는 법, Singular 개발 문서: iOS, Android, Unity)을 참조하여 딥링크를 활성화합니다. Singular SDK와는 별도로 본 내용이 연동되어야 합니다.

2. Schema 추가

Singular 플랫폼에서 설정 > 앱으로 이동하여 위 비디오를 참조하여 해당 앱에 딥링크를 추가하세요.

3. 테스트 링크 생성

Singular에서:

  • 어트리뷰션 > 커스텀 링크 생성으로 이동한 후 드롭 다운 리스트에서 앱을 선택합니다.
  • 파트너 타입 혹은 커스텀을 선택한 후 소스 이름을 지정합니다.
  • 드롭 다운 리스트에서 딥링크를 선택합니다.
  • 링크 생성을 클릭합니다.
  • 링크를 복사합니다.

4. Link 링크

옵션 1:

  • 테스트 기기에 앱이 설치되어 있는지 확인하세요.
  • 테스트 기기로 복사한 링크를 포함한 이메일을 보내고 기기에서 링크를 클릭합니다.
  • 앱이 제공된 스키마가 가리키는 페이지에서 열려야 합니다.

옵션 2 (Android 한정):

컴퓨터의 커맨드 라인 터미널을 열고 딥링크를 실행합니다.

다음 에러가 나타난다면 앱이 딥링크를 지원하지 않는다는 뜻입니다. Appendix A: 앱에 딥링크 구현하는 법을 참조하세요.

FAQ

7단계. 지연된 딥링크(Deferred Deep-Link) 확인

주의: 이 기능 활용을 위해서는 Singular SDK와는 별도로 딥링크를 먼저 앱에 구현(iOS, Android)해야 합니다.

  • iOS, Android, Unity 문서를 참조하여 지연된 딥링크(Deferred Deep-Link) 핸들러를 연동합니다.
    SDK 콘솔의 세션 이벤트 세부 내역에 지연된 딥링크 활성화 여부를 확인하세요.
  • 플랫폼의 앱 메뉴에서 Schema를 앱에 추가합니다.
  • 테스트 링크를 생성합니다.
    • 어트리뷰션 > 커스텀 링크 생성으로 이동한 후 드롭 다운 리스트에서 앱을 선택합니다.
    • 파트너 타입 혹은 커스텀을 선택한 후 소스 이름을 지정합니다
    • 드롭 다운 리스트에서 딥링크를 선택합니다. 지연된 딥링크 옵션도 체크합니다.
    • 링크 생성을 클릭합니다.
    • 링크를 복사합니다.
  • 지연된 딥링크 테스트:

에러가 발생하거나 지연된 딥링크 구현에 어려움이 있는 경우 개발 문서를 참조하세요(iOS, Android, Unity).

8단계. 인앱 이벤트 확인

  • 테스트 기기를 SDK 콘솔에 등록합니다.
  • 앱을 실행합니다.
  • 인앱 이벤트를 실행합니다.

해당 이벤트가 등장하지 않는다면 SDK 콘솔에 기기가 완전히 등록되기 전에 앱이 열렸을 가능성이 있으므로 이벤트 로그를 추출하여 확인해보세요.

9단계. 매출(Revenue) 트래킹 확인

  • 테스트 기기를 SDK 콘솔에 등록합니다.
  • 앱을 실행합니다.
  • 매출 이벤트를 실행합니다.
  • 이벤트 등장 및 세부 내용을 확인하세요. 이벤트 이름은 “__iap__”, 이벤트 데이터에는 pcc 통화단위와 r 값이 연동 내역에 맞게 나타나야 합니다.

주의: 만약 “__iap_auto__”라는 이벤트 이름이 등장하는 경우 onboarding@singular.net으로 연락하셔서 해당 기능을 비활성화 하는 방법을 안내받으세요.

해당 매출 이벤트가 등장하지 않는다면 SDK 콘솔에 기기가 완전히 등록되기 전에 앱이 열렸을 가능성이 있으므로 이벤트 로그를 추출하여 확인해보세요.

10단계. 언인스톨 트래킹 확인

주의: 이 기능 활용을 위해서는 Singular SDK와는 별도로 push notification을 먼저 앱에 구현(iOS, Android)해야 합니다.

  • Singular 개발 문서(iOS, Android, Unity)를 참조하여 push notification service 디바이스 토큰을 앱에 설정하세요.
  • Singular 플랫폼에 키를 설정하세요.
    • Android: 설정 > 앱으로 이동하고 해당 앱에 GCM/FCM 키를 추가하세요.

      b. iOS: iOS Push Certificate 파일을 추가하세요.

기기 토큰을 설정한 앱에서 앱을 두 번 이상 실행한 후 onboarding@singular.net 으로 해당 기능의 연동 확인을 요청해주세요.

Appendix A: 앱에 딥링크 연동하는 법

1. Manifest에 인텐트 필터 추가

Android manifest 파일에 새 인텐트 필터를 추가해서 Android의 OS에 앱이 처리할 수 있는 딥링크가 무엇인지 알립니다.

업데이트된 manifest는 다음 새 태그들을 제공합니다.

Tags

Description

<intent-filter>

Contains the view elements for the RecipeActivity.

<action>

Specifies the ACTION_VIEW intent action.

<data>

One for each data URI format that the activity accepts. This is the primary mechanism to declare the format for our deep-links.

<category>

Used both for BROWSABLE and DEFAULT intent categories:

BROWSABLE -- required for a mobile browser to execute the intent from within Google Search results. Without this attribute, a click on your URL from a mobile browser will not resolve to your app. Instead, the current web browser will open the URL of the website.

DEFAULT -- required only if you want your Android app to respond to a click from any referring website. The intent used from Google search results includes the identity of your app, so the intent explicitly points to your app as the recipient. Other links to your site do not know your app identity, so the DEFAULT category declares your app can accept an implicit intent.

주의: http://와 recipe-app:// 처럼 다수의 딥링크 형식을 가지고 있다면 각각을 처리할 수 있도록 개발 인텐트 필터를 각각 추가해야 합니다.

2. 인텐트 필터 코드 추가

다음 예제는 인텐트에서 RecipeActivity를 선언한 후 앱 내에도 코드를 추가하여 딥링크 인텐트가 수신되면 레시피를 표시하는 예제입니다.

먼저 onCreate() 메서드에서 onNewIntent() 호출을 추가하고 현 액티비티의 인텐트를 전달합니다.

다음으로 onNewIntent() 메서드를 정의하고 인텐트를 딥링크 인텐트로 확인합니다. 딥링크 인텐트인 경우 인텐트 데이터에서 레시피 URI를 추출하여 컨텐트 프로바이더에서 찾은 후 showRecipe() 메서드를 호출하여 레시피를 표시하도록 합니다.

RecipeActivity.java

위 예제에서는 딥링크에서 고유한 레시피 ID를 가져와서 앱의 내부 데이터베이스에서 불러왔습니다. ID에 맞는 레시피가 있는 경우 화면에 표시합니다.

중요 사항: 딥링크로 열리는 앱의 경우 사용자에게 First Click Free 경험을 제공해야 합니다. 즉, 앱에 처음 방문하는 경우 사용자가 관련 컨텐츠로 바로 이동해야 하며 로그인 화면과 같은 삽입 광고 콘텐츠로 인해 중단되지 않아야 합니다. 유저 조치가 필요하면 첫 번째 클릭 후 사용자에게 조치를 요구할 수 있습니다. 이러한 First Click Free 경험은 앱이 한 번도 열리지 않았거나 유저가 로그인하지 않았더라도 제공되어야 합니다.

FAQ

Activity not started, unable to resolve Intent" 에러가 나타나는 이유?

딥링크에서 다수의 앱 인스턴스를 열지 않는 법?

도움이 되었습니까?
0명 중 0명이 도움이 되었다고 했습니다.