廣告活動評估

本文件將概述如何使用適用於 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。

如果應用程式有多個進入點 (例如特定部分的深層連結),您可以在 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 網址中加入 Google Analytics (分析) 廣告活動參數

接著,請為會直接連結至 Google Play 商店的任何網址新增 referrer 參數,並將該參數的值設為描述來源的 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 廣告活動評估網址。