본문 바로가기
카테고리 없음

[Android] 안드로이드 앱 설치시 트래킹 링크를 가져와 광고 추적하는 법 (Install Referrer)

by dev_gyu 2024. 10. 1.
728x90

# Install Referrer 란?

실서비스를 운영할 때 광고는 중요하다.

어떤 광고를 송출하느냐에 따라 서비스로 진입하는 유저의 수가 천차만별이기 때문이다.

하지만 이러한 광고 서비스의 경우 무료로 운영되는 곳은 거의 없으며 대부분 유료 광고를 사용하게 된다.

즉, 광고 하나하나가 다 돈이라는 것이다.

 

사용자를 끌어들이고, 최소한의 광고비 지출을 하기 위해서는 어떤 광고에서 유저가 얼마나 들어왔는지와 같은 분석이 필요하다.

그렇기에 많은 회사에서는 MixPanel 이나 Analytics 와 같은 데이터 분석 툴을 활용할 줄 아는 데이터 분석가를 두는 것이고 말이다.

 

특히나 개인적인 서비스를 운영할 때도 이러한 데이터 분석은 더욱 더 큰 장점을 지니게 되는데, 그 이유는 개인이 가지고 있는 돈과 시간에는 한계가 있기 때문이다.

 

이러한 상황에서 앱을 설치한 유저가 어떤 경로를 통해 앱을 설치하였는지 추적할 수 있게 해주는 것이 바로 Install Referrer API 이다.

 

* 이 기능은 앱이 플레이스토어에 게시가 되어있어야, 제대로 된 설치 데이터를 받을 수 있습니다.

# 사용 방법

1. 다음 라이브러리를 디펜던시에 추가해준다. 

implementation("com.android.installreferrer:installreferrer:2.2")

 

2. InstallReferrerClient 를 초기화 시켜준다.

val referrerClient = InstallReferrerClient.newBuilder(context).build()

 

3. referrerClient 의 startConnection 메소드를 호출하여 연결을 시작해준다. 인수로는 InstallReferrerStateListener Listener 를 설정해준다.

fun testMain(){
        referrerClient.startConnection(object : InstallReferrerStateListener {
            override fun onInstallReferrerSetupFinished(responseCode: Int) {
                when (responseCode){
                	// 성공 시
                    InstallReferrerClient.InstallReferrerResponse.OK -> {}
                    // 디바이스나 앱이 지원하지 않는 기능인 경우
                    InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {}
                    // 구글 플레이 서비스 사용이 불가능 하거나 네트워크 연결 불안정 등의 상황
                    InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {}
                }
            }

            override fun onInstallReferrerServiceDisconnected() {

            }
        })
    }

 

4. OK 부분에서 앱 설치 링크 주소를 추출하여, 어느 링크를 통해 진입했는지 파악한다.

fun testMain(){
    referrerClient.startConnection(object : InstallReferrerStateListener {
        override fun onInstallReferrerSetupFinished(responseCode: Int) {
            when (responseCode){
                // 성공 시
                InstallReferrerClient.InstallReferrerResponse.OK -> {
                    val referrerUrl = referrerClient.installReferrer.installReferrer ?: ""
                    val uriStr = "https://play.google.com/store/apps/details?$referrerUrl"
                    val uri = Uri.parse(uriStr)
                    val linkParams = getLinkParams(uri)
                    Timber.d("InstallReferrer Uri - $uri\nutmParams : $linkParams")
                }
                // 디바이스나 앱이 지원하지 않는 기능인 경우
                InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {}
                // 구글 플레이 서비스 사용이 불가능 하거나 네트워크 연결 불안정 등의 상황
                InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {}
            }
            
            referrerClient.endConnection()
        }

        override fun onInstallReferrerServiceDisconnected() {
            referrerClient.endConnection()
        }
    })
}

fun getLinkParams(uri: Uri): Map<String, String> {
    val params = mutableMapOf<String, String>()
    uri.queryParameterNames.forEach { key ->
        params[key] = uri.getQueryParameter(key) ?: ""
    }
    return params
}

 

 

5. 광고 플랫폼에 링크를 등록해준다. 이 때, UTM Paramter 값에 맞춰 링크를 등록한다

  • UTM Paramter 를 모르는 경우 검색 참조
  • UTM Paramter 를 사용하지 않고 쿼리형식 Key Value 를 설정하는 경우 아무 값이나 넣어도 되지만, 광고 추적시 UTM Parameter 형식으로 추적을 하는 경우가 많기에 이를 추천한다.
https://play.google.com/store/apps/details?id=(패키지명)&referrer=(사용할 referrer 값) 

예시) https://play.google.com/store/apps/details?id=dev.gyu.test&referrer=key=value

 

단, 리다이렉트를 통한 진입 시 = 와 같은 부호가 정상적으로 읽히지 않을 수 있으므로, 아래처럼 URL 인코딩 방식으로 Query 설정을 해보는 것을 추천한다.

https://play.google.com/store/apps/details?id=dev.gyu.test&referrer=key=value 
위의 주소를
https://play.google.com/store/apps/details?id=dev.gyu.test&referrer=key%3Dvalue
로 변경

 

# 테스트 해보기

 

앱을 플레이스토어에서 직접 다운받지 않고, 개발단에서 테스트 하기 위한 방법은 무척 간단하다.

  1. http://play.google.com/store/apps/detail?id=(앱패키지)&referrer=(리퍼럴정보들) 링크를 타고 들어간다. (나의 경우 리퍼럴 정보는 다음과 같이 하였다. referrer=utm_source%3DTest%26utm_medium%3DTest)
  2. 링크 접속 시, 마켓에서 앱 설치 버튼을 누르지 않는다.
  3. 마켓이 열린 상태로 안드로이드 스튜디오에서 빌드를 한다.
  4. 테스트 완료

 

실행 결과

실행 결과 설치 당시 Link 에 담겨져있던 쿼리 파라미터를 정상적으로 가져오는 것을 확인할 수 있다.

테스트 시 플레이스토어와 똑같은 환경에서 테스트 해야하니 Release 빌드를 추천한다.

 

# 만약 Referrer Info 가 정상적으로 불러와지지 않는 경우

1. 링크 주소를 확인해보고, 아니라면 설치를 한 유저의 플레이스토어 계정이 회사 계정인지 확인해본다.

회사 계정인 경우 정상적인 등록값이 불러와지지 않는다고 하는데 이 부분은 나도 이유는 모르겠음 ..

 

2. 혹시나 빌드 파일의 패키지네임과 플레이스토어의 패키지 네임이 같지 않은지 확인해보자. 패키지네임이 동일해야한다.

728x90