삭제 및 재설치 측정

Adjust Android SDK를 사용하면 앱 삭제 및 재설치를 측정할 수 있습니다. Adjust는 푸시 토큰을 사용하여 사용자의 기기에 사일런트 푸시 알림을 전송하고, 앱이 설치되어 있는지 확인합니다.

다음의 설명서를 참조하여 본 기능을 앱에 추가하시기 바랍니다.

참고:

삭제 및 재설치 측정은 Google Play Services가 설치된 기기에 한하여, 앱 스토어나 다이렉트 다운로드를 통해 배포된 앱에 대해 유효합니다. Amazon 및 Huawei 기기와 같이 Google Play 서비스가 없는 기기는 현재 지원되지 않습니다.

시작에 앞서

시작하기 전에 알아야 할 사항은 다음과 같습니다.

요구 사항

Google FCM을 Adjust에 연결

Google의 Firebase Cloud Messaging (FCM) API를 통해 사일런트 푸시 알림을 구성하면 앱 삭제 및 재설치를 측정할 수 있습니다. Adjust가 Google FCM에 연결하려면 FCM HTTP v1 API 프라이빗 키가 필요합니다.

중요:

레거시 서비스 키를 사용하는 대신 새 FCM HTTP v1 프라이빗 키를 생성합니다. Google은 2024년 6월 20일부터 Cloud Messaging API(레거시) 지원을 중단합니다.

Google Cloud 콘솔

1. Adjust의 삭제 및 재설치 측정을 위한 커스텀 역할 생성

  1. Google Cloud Console 에 액세스합니다.

  2. Firebase 프로젝트와 연결된 Google Cloud 프로젝트를 선택합니다.

  3. IAM & Admin 을 검색합니다.

  4. 사이드 메뉴에서 Roles 을 선택합니다.

  5. + Create Role 을 선택합니다.

  6. 다음의 정보를 입력합니다.

    1. 제목 : Adjust 삭제
    2. ID : adjust_uninstall
    3. 역할 시작 단계 : General Availability
  7. + Add Permissions 를 선택합니다.

  8. 속성 이름 또는 값 입력 필드에 cloudmessaging.messages.create 를 입력하고 검색 결과에서 이를 선택합니다.

  9. Cloudmessaging.messages.create 옵션을 확인하고 Add 를 선택합니다.

  10. 생성 을 선택합니다.

2. 서비스 계정 만들기

  1. 사이드 메뉴에서 서비스 계정 을 선택합니다.
  2. + Create Service Account 을 선택합니다.
  3. 서비스 계정 이름 필드에 Adjust Uninstall Service Account 를 입력합니다.
  4. Create and Continue 를 선택합니다.
  5. Select a role 드롭다운 메뉴를 선택합니다. Adjust Uninstall 를 입력하고 검색 결과에서 이를 선택합니다.
  6. 계속 을 선택합니다.
  7. 완료 를 선택합니다.

3. 프라이빗 키 생성 및 다운로드

  1. 새로 생성된 서비스 계정을 선택합니다. 형식은 다음과 같습니다: adjust-uninstall-service-account@test3-55065.iam.gserviceaccount.com.
  2. 탭을 선택합니다.
  3. Add Key > Create new key 을 선택합니다.
  4. JSON 을 선택한 뒤 Create 를 선택합니다. 개인 키는 JSON 파일로 컴퓨터에 다운로드됩니다.

Adjust 대시보드

사용자의 Adjust 계정으로부터 DataWorks에 FCM 연결을 추가합니다.

  1. DataWorks에서 + 새 connection 을 선택합니다.

  2. Google FCM 파트너를 검색합니다.

  3. 양식을 작성합니다.

    • 앱의 앱 토큰AppView -> 모든 앱 섹션에서 찾을 수 있습니다.
    • 이전 섹션에서 생성된 JSON 파일에서 나머지 정보를 확인하시기 바랍니다. 파일에 따옴표를 포함하지 마시기 바랍니다.
  4. 생성 을 선택합니다.

Adjust SDK와 연동

다음의 설명을 참조하여 FCM과 Adjust SDK를 연동하시기 바랍니다.

  1. build.gradle 파일에 Firebase Messaging 에 대해 필수 디펜던시가 있는지 확인합니다.
Kotlin (build.gradle.kts)
Groovy (build.gradle)
dependencies {
  // ...
  implementation("com.google.firebase:firebase-messaging:23.4.0")
  // ...
}
  1. Google의 문서 에 따라 Android에서 Firebase Cloud Messaging 클라이언트 앱을 아직 설정하지 않은 경우 설정합니다.
  2. 해당 기기에 대한 푸시 토큰을 Adjust SDK에 전달합니다.
    • 자체 푸시 알림을 앱에 전송하는 경우, FirebaseMessagingService 클래스의 onMessageReceived 메서드를 모든 유형의 푸시 알림을 처리하는 로직으로 오버라이드해야 합니다.

예시

다음의 코드 스니펫은 FirebaseMessagingService 클래스를 확장하여 Adjust SDK에 푸시 토큰을 전달하고, 푸시 알림 처리 로직을 업데이트하는 방법을 보여줍니다. 자체 푸시 알림을 보내지 않는다면 onMessageReceived 메서드 오버라이드를 건너뛸 수 있습니다.

중요:
아래와 같이 onMessageReceived 를 재정의하는 경우 앱이 푸시 알림을 처리하는 방식에 영향을 주지 않도록 주의하시기 바랍니다. 아래의 푸시 알림 처리 코드를 수정한 후 앱이 포그라운드 상태일 때 자체 푸시 알림 전송을 테스트하시기 바랍니다.
Kotlin
Java
import com.adjust.sdk.Adjust
import com.adjust.sdk.Util
import com.google.firebase.messaging.FirebaseMessaging
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage

class MyFirebaseMessagingService : FirebaseMessagingService() {

  override fun onCreate() {
    super.onCreate()
    // Fetch FCM token and set in Adjust SDK
    FirebaseMessaging.getInstance().token
      .addOnCompleteListener { task ->
        if (task.isSuccessful && task.result != null) {
          Adjust.setPushToken(task.result, applicationContext)
        }
      }
  }

  override fun onNewToken(token: String) {
    super.onNewToken(token)
    
    // Receive new FCM token and set in Adjust SDK
    Adjust.setPushToken(token, applicationContext)
  }

  override fun onMessageReceived(remoteMessage: RemoteMessage) {
    super.onMessageReceived(remoteMessage)

    // Check if message has data payload
    if (remoteMessage.data.isNotEmpty()) {
      val payload: Map<String, String> = remoteMessage.data

      // Check for Adjust uninstall detection data message
      if (Util.isAdjustUninstallDetectionPayload(payload)) {
        // No handling required for Adjust data payload
      } else {
        // Handle other data payloads here
      }
    }

    // Check if message has notification payload
    remoteMessage.notification?.let {
      // Handle notification payload here
    }
  }
}
  1. Adjust SDK 초기화 전에 앱에서 Firebase 인스턴스를 초기화합니다.

예시

다음은 Android 프로젝트의 어플리케이션 클래스 예시입니다. 앱이 시작되자마자 Firebase 인스턴스를 초기화하는 것을 확인할 수 있습니다.

Kotlin
Java
import android.app.Application
import com.adjust.sdk.Adjust
import com.adjust.sdk.AdjustConfig
import com.google.firebase.FirebaseApp

class MyApp : Application() {

  override fun onCreate() {
    super.onCreate()

    // Initialize Firebase App
    FirebaseApp.initializeApp(this)

    // Configure Adjust SDK
    // Replace {YourAppToken} with your Adjust app token
    val appToken = "{YourAppToken}"
    val environment = AdjustConfig.ENVIRONMENT_PRODUCTION
    val config = AdjustConfig(this, appToken, environment)

    // Initialize Adjust SDK
    Adjust.onCreate(config)
  }
}

연동 테스트

Adjust는 Android 앱이 Adjust 프로덕션 환경에서 마지막으로 활동이 이루어진 기기로부터의 Android 앱 삭제를 확인합니다.

삭제 및 재설치 측정을 테스트하려면 디버그 빌드나 릴리즈 빌드를 사용할 수 있습니다. 설치 테스트 시에는 Adjust SDK 환경을 프로덕션 으로 설정해야 함을 반드시 유의하시기 바랍니다.

삭제 측정 테스트 방법:

  1. Adjust SDK 초기화 전 Adjust SDK에서 환경을 AdjustConfig.ENVIRONMENT_PRODUCTION 으로 설정하시기 바랍니다.

  2. 실제 테스트용 기기나 에뮬레이터에 앱을 설치합니다.

  3. 앱을 실행합니다.

  4. Adjust의 테스트용 콘솔 을 실행합니다.

  5. 기기 ID 를 입력한 후 기기 데이터 보기 를 선택합니다.

  6. 앱 정보 섹션:

    • 설치 상태Installed 로 표시되어야 합니다.
    • 푸시 토큰 에 대한 값이 있어야 합니다.
  7. 앱을 삭제합니다.

  8. Adjust는 하루에 한 번 테스트 삭제를 확인하므로 24시간 후에 다시 테스팅 콘솔을 확인합니다. 앱 정보 섹션 아래에 설치 상태 가 '삭제됨'으로 표시됩니다.

상태가 설치됨 에서 삭제됨 으로 변경됨으로써 삭제 및 재설치 측정 기능이 올바르게 작동합니다.재설치 측정 테스트를 위해서는 다음 단계를 수행하시기 바랍니다.

  1. 디버그 빌드를 재설치하거나 실제 테스트 기기나 에뮬레이터에서 빌드를 릴리스합니다.
  2. 앱을 실행합니다.
  3. Adjust는 하루에 한 번 재설치를 확인하므로 24시간 후에 다시 테스트 콘솔을 확인합니다. 앱 정보 섹션의 설치 상태재설치 가 표시됩니다.

문제 해결

삭제 및 재설치 테스트 시 자주 발생하는 이슈는 다음과 같습니다.

  • Adjust SDK 환경은 테스트 설치 발생 시 AdjustConfig.ENVIRONMENT_SANDBOX 로 설정되어 있습니다. 이러한 설정에서는 삭제 및 재설치 측정이 작동하지 않습니다. Adjust SDK의 설정을 AdjustConfig.ENVIRONMENT_PRODUCTION 로 변경하시기 바랍니다.
  • Push 토큰이 없는 경우. Push 토큰이 테스트 콘솔에 표시되지 않으면 Firebase 구현 또는 Firebase SDK와 Adjust SDK 연동에 사용된 코드에 문제가 발생하였을 수 있습니다. 다음 요소를 검토하시기 바랍니다.
  • FCM HTTP v1 API 개인 키에 문제가 발생한 경우. 예를 들어 생성한 개인 키가 잘못된 프로젝트에 속하거나 Adjust Suite에 입력한 세부 사항이 올바르지 않은 것일 수 있습니다. 위 사항을 검토하시고, 필요한 경우 기기의 푸시 토큰을 포함하여 담당 테크니컬 어카운트 매니저나 support@adjust.com 에 연락하시기 바랍니다. Google API로부터의 응답 확인을 위해 로그를 풀링할 수도 있습니다.

문제 해결 이후에는 다음 단계를 통해 테스트를 다시 진행하시기 바랍니다.

  1. 앱을 삭제합니다.
  2. 테스트용 콘솔에서 기기 ID 를 입력한 뒤 기기 데이터 보기 > 기기 삭제 를 선택합니다.
  3. 연동 테스트 섹션 아래의 단계를 반복합니다.