캠페인 측정

이 문서에서는 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 스토어로 연결되는 링크에 리퍼러 매개변수를 추가하고 Play의 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를 사용합니다.

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

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 애널리틱스 캠페인 매개변수 추가

그런 다음 Google Play 스토어로 직접 연결되는 모든 URL에 referrer 매개변수를 추가하고 이 매개변수의 값을 소스를 설명하는 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 캠페인 콘텐츠: 동일한 URL을 가리키는 광고 또는 링크를 구분하기 위해 A/B 테스트 및 콘텐츠 타겟팅 광고에 사용됨 utm_content=logolink
utm_content=textlink
utm_campaign 캠페인 이름. 특정 제품 프로모션 또는 전략적 캠페인을 식별하기 위한 키워드 분석에 사용됩니다. utm_campaign=spring_sale
gclid Google Ads 자동 태그 추가 매개변수: 광고를 측정하는 데 사용됩니다. 이 값은 동적으로 생성되며 수정해서는 안 됩니다.

Google Play URL 작성 도구

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