캠페인 측정

이 문서에서는 Android용 Google 애널리틱스 SDK v4로 캠페인 및 트래픽 소스를 측정하는 방법을 간략히 설명합니다.

개요

Google 애널리틱스에서 캠페인을 측정하면 캠페인 및 트래픽 소스를 애플리케이션 내 사용자 활동에 기여할 수 있습니다. 다음 옵션은 Android용 Google 애널리틱스 SDK v4의 캠페인 및 트래픽 소스 기여 분석에 사용할 수 있습니다.

다음 섹션에서는 앱에서 각 유형의 캠페인 측정을 구현하는 시기와 방법을 설명합니다.

Google Play 캠페인 기여 분석

Google Play 캠페인 측정을 사용하면 Google Play 스토어에서 앱을 다운로드하기 위해 사용자를 보내는 캠페인 및 트래픽 소스를 확인할 수 있습니다. 모든 개발자는 Google Play 스토어 캠페인 측정을 구현하는 것이 좋습니다.

Google Play 캠페인 기여 분석 구현

Google Play 스토어는 개발자가 Google Play에서 추천 콘텐츠를 안전하게 검색할 수 있도록 Install Referrer API를 제공합니다. 이 API는 앱의 Google Play 스토어 페이지에 도달하는 데 사용된 리퍼러 매개변수의 값을 반환합니다(있는 경우).

앱 다운로드에 캠페인의 기여도를 부여하려면 Google Play 스토어로 연결되는 모든 링크에 리퍼러 매개변수를 추가하고, Google의 Install Referrer API를 앱에 추가하여 Google 애널리틱스 추적기에서 인텐트에 포함된 캠페인 정보를 수신하고 설정해야 합니다.

1. AndroidManifest.xml 파일에서 Google 애널리틱스 수신자를 삭제합니다.

Google 태그 관리자 수신자도 구현한 경우 매니페스트에서 이 항목을 삭제하세요.

2. Install Referrer API 라이브러리의 종속 항목을 추가합니다.

종속 항목을 추가하려면 build.gradle에 다음을 포함합니다.

dependencies {
    ...
    implementation 'com.android.installreferrer:installreferrer:1.1'
}

3. 앱의 시작 활동에서 Install Referrer API를 호출합니다.

Install Referrer API를 사용하여 설치된 앱 패키지의 리퍼러 URL을 검색한 다음 URL 값을 Google 애널리틱스 또는 Google 태그 관리자 수신자에 전달합니다. 다음 코드와 유사한 구현을 따라 앱의 시작 활동에서 Install Referrer API를 사용합니다.

특정 부분으로 연결되는 딥 링크와 같이 앱에 진입점이 여러 개 있다면 ActivityLifecycleCallbacks에 의해 트리거되는 ActivityLifecycleListener에 사전 정의된 메서드를 구현할 수 있습니다.

package com.example.myapplication;

import static com.android.installreferrer.api.InstallReferrerClient.InstallReferrerResponse;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;

import com.android.installreferrer.api.InstallReferrerClient;
import com.android.installreferrer.api.InstallReferrerStateListener;
import com.android.installreferrer.api.ReferrerDetails;
import com.google.android.gms.analytics.CampaignTrackingReceiver;
import com.google.tagmanager.InstallReferrerReceiver;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

public class MainActivity extends AppCompatActivity {

    private final Executor backgroundExecutor = Executors.newSingleThreadExecutor();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkInstallReferrer();
    }

    // TODO: Change this to use whatever preferences are appropriate. The install referrer should
    // only be sent to the receiver once.
    private final String prefKey = "checkedInstallReferrer";

    void checkInstallReferrer() {
        if (getPreferences(MODE_PRIVATE).getBoolean(prefKey, false)) {
            return;
        }

        InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(this).build();
        backgroundExecutor.execute(() -> getInstallReferrerFromClient(referrerClient));
    }

    void getInstallReferrerFromClient(InstallReferrerClient referrerClient) {

        referrerClient.startConnection(new InstallReferrerStateListener() {
            @Override
            public void onInstallReferrerSetupFinished(int responseCode) {
                switch (responseCode) {
                    case InstallReferrerResponse.OK:
                        ReferrerDetails response = null;
                        try {
                            response = referrerClient.getInstallReferrer();
                        } catch (RemoteException e) {
                            e.printStackTrace();
                            return;
                        }
                        final String referrerUrl = response.getInstallReferrer();


                        // TODO: If you're using GTM, call trackInstallReferrerforGTM instead.
                        trackInstallReferrer(referrerUrl);


                        // Only check this once.
                        getPreferences(MODE_PRIVATE).edit().putBoolean(prefKey, true).commit();

                        // End the connection
                        referrerClient.endConnection();

                        break;
                    case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
                        // API not available on the current Play Store app.
                        break;
                    case InstallReferrerResponse.SERVICE_UNAVAILABLE:
                        // Connection couldn't be established.
                        break;
                }
            }

            @Override
            public void onInstallReferrerServiceDisconnected() {

            }
        });
    }

    // Tracker for Classic GA (call this if you are using Classic GA only)
    private void trackInstallReferrer(final String referrerUrl) {
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                CampaignTrackingReceiver receiver = new CampaignTrackingReceiver();
                Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
                intent.putExtra("referrer", referrerUrl);
                receiver.onReceive(getApplicationContext(), intent);
            }
        });
    }

    // Tracker for GTM + Classic GA (call this if you are using GTM + Classic GA only)
    private void trackInstallReferrerforGTM(final String referrerUrl) {
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                InstallReferrerReceiver receiver = new InstallReferrerReceiver();
                Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
                intent.putExtra("referrer", referrerUrl);
                receiver.onReceive(getApplicationContext(), intent);
            }
        });
    }

}

4. Google Play URL에 Google 애널리틱스 캠페인 매개변수 추가하기

그런 다음 referrer 매개변수를 Google Play 스토어로 직접 연결되는 URL에 추가하고 다음 예와 같이 이 매개변수의 값을 소스를 설명하는 Google 애널리틱스 캠페인 매개변수 문자열로 설정합니다.

https://play.google.com/store/apps/details?id=com.example.application
&referrer=utm_source%3Dgoogle
%26utm_medium%3Dcpc
%26utm_term%3Drunning%252Bshoes
%26utm_content%3Dlogolink
%26utm_campaign%3Dspring_sale

캠페인 매개변수 문자열을 빌드하는 방법을 알아보려면 Google Play URL 작성 도구를 사용하거나 캠페인 매개변수 참조 섹션을 확인하세요.

일반 캠페인 및 트래픽 소스 기여 분석

앱이 설치된 후 광고 캠페인, 웹사이트 또는 기타 앱의 추천으로 실행될 수 있습니다. 이 시나리오에서는 setCampaignParamsFromUrl 메서드를 사용하여 추적기에 캠페인 매개변수를 직접 설정하여 후속 트래픽에서 추천 트래픽 소스 또는 마케팅 캠페인이 기여했다고 판단할 수 있습니다.

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

// In this example, campaign information is set using
// a url string with Google Analytics campaign parameters.
// Note: This is for illustrative purposes. In most cases campaign
//       information would come from an incoming Intent.
String campaignData = "http://examplepetstore.com/index.html?" +
    "utm_source=email&utm_medium=email_marketing&utm_campaign=summer" +
    "&utm_content=email_variation_1";

// Campaign data sent with this hit.
t.send(new HitBuilders.ScreenViewBuilder()
    .setCampaignParamsFromUrl(campaignData)
    .build()
);

getTracker 메서드에 관한 자세한 내용은 고급 구성을 참고하세요.

캠페인 매개변수

캠페인 매개변수는 사용자를 앱으로 유도하는 트래픽 소스 및 캠페인에 대한 정보를 전달하는 데 사용됩니다.

아래 표에는 Google Play 또는 일반 캠페인 측정에서 사용할 수 있는 캠페인 매개변수가 포함되어 있습니다.

매개변수 설명 예시
utm_source 검색엔진, 뉴스레터 또는 기타 소스를 식별하는 데 사용되는 캠페인 소스 utm_source=google
utm_medium 이메일 또는 클릭당비용 (CPC)과 같은 매체를 식별하는 데 사용되는 캠페인 매체 utm_medium=cpc
utm_term 캠페인 용어. 유료 키워드를 찾기 위해 키워드 검색에 사용 utm_term=running+shoes
utm_content 캠페인 콘텐츠: A/B 테스트 및 콘텐츠 타겟팅 광고로 동일한 URL을 가리키는 광고 또는 링크를 구분하는 데 사용됨 utm_content=logolink
utm_content=textlink
utm_campaign 캠페인 이름. 특정 제품 프로모션 또는 전략적 캠페인을 식별하는 키워드 분석에 사용됩니다. utm_campaign=spring_sale
gclid Google Ads 자동 태그 추가 매개변수: 광고를 측정하는 데 사용됩니다. 이 값은 동적으로 생성되며 수정해서는 안 됩니다.

Google Play URL 작성 도구

아래의 도구를 사용하여 Google Play 캠페인 측정에 사용할 URL을 생성하세요.