廣告活動評估

本文件將概略說明如何透過 Android 適用的 Google Analytics (分析) SDK v4 評估廣告活動和流量來源。

總覽

在 Google Analytics (分析) 中評估廣告活動,您便可將廣告活動和流量來源歸因給應用程式中的使用者活動。下列選項適用於 Android 適用的 Google Analytics (分析) SDK v4 中的廣告活動和流量來源歸因:

以下各節將說明在應用程式中導入各種廣告活動評估的時機和方式。

Google Play 廣告活動歸因分析

您可以運用 Google Play 廣告活動評估功能,查看哪些廣告活動和流量來源正在從 Google Play 商店下載應用程式。建議所有開發人員導入 Google Play 商店廣告活動評估功能。

導入 Google Play 廣告活動歸因分析

Google Play 商店提供 Install Referrer API,可讓開發人員安全地從 Google Play 擷取參照內容。這個 API 會傳回參照網址連結至 Google Play 商店頁面時所用的參數 (如果有的話)。

如要將應用程式下載歸因於廣告活動,您必須在指向 Google Play 商店的任何連結中加入參照網址參數,並在應用程式中加入 Play 的 Install Referrer API,藉此接收並設定 Google Analytics (分析) 追蹤程式意圖中包含的廣告活動資訊。

1. 從 AndroidManifest.xml 檔案中移除 Google Analytics (分析) 接收器

如果您也導入 Google 代碼管理工具接收器,請一併從資訊清單中移除該程式。

2. 為 Install Referrer API 程式庫新增依附元件。

如要新增依附元件,請在 build.gradle 中加入以下內容:

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

3.在應用程式的啟動活動中呼叫 Install Referrer API。

使用 Install Referrer API 擷取已安裝應用程式套件的參照網址,然後將網址值傳送給 Google Analytics (分析) 或 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 網址中加入 Google Analytics (分析) 廣告活動參數

接著將 referrer 參數加進要直接連結到 Google Play 商店的所有網址,然後將參數值設為用來說明來源的 Google Analytics (分析) 廣告活動參數字串,如以下範例所示:

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 網址產生器或參閱廣告活動參數參考資料部分。

一般廣告活動和流量來源歸因

應用程式安裝完成後,應用程式、網站或其他應用程式的參照連結網址就會啟動。在這個情境中,您可以透過 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 廣告活動媒介;用來識別電子郵件或單次點擊出價等媒介 utm_medium=cpc
utm_term 廣告活動字詞;透過付費搜尋提供廣告關鍵字 utm_term=running+shoes
utm_content 廣告活動內容;用於 A/B 測試和指定內容廣告,以區分指向相同網址的廣告或連結 utm_content=logolink
utm_content=textlink
utm_campaign 廣告活動名稱;用於關鍵字分析,識別特定產品促銷或策略廣告活動 utm_campaign=spring_sale
gclid Google Ads 自動標記參數;用於評估廣告。系統會動態產生這個值,請勿修改。

Google Play 網址產生器

請使用下列工具產生網址,以便進行 Google Play 廣告活動評估。