Meta 安裝引介來源

此文件會向您展示如何在您的 Android 應用程式中使用 Meta 安裝引介來源,從而取得以應用程式安裝次數為目標的 Facebook、Instagram 和 Audience Network 廣告宣傳活動的中繼資料。Google Play 安裝引介來源(GPIR)僅提供同一連線階段的點擊安裝次數資料,而 Meta 安裝引介來源則包括以下資料:

  • 觀看安裝次數(VT)
  • 點擊安裝次數(CT)
  • 多連線階段點擊安裝次數

如要為您的 Android 應用程式宣傳活動設定 Meta 安裝引介來源,您有兩個選項可以選擇:直接整合透過流動衡量合作夥伴(MMP)使用支援整合

選項 1:直接整合

準備工作

開始之前,您需要準備以下項目:

第 1 步:新增 Meta 應用程式

在您的 AndroidManifest.xml 檔案內的 Facebook、Instagram 和 Facebook Lite 應用程式中加入 queries 素材,以允許應用程式從這些 Meta 應用程式取得引介歸因資料。

<queries>
  <package android:name="com.facebook.katana" />
</queries>

<queries>
  <package android:name="com.instagram.android" />
</queries>

<queries>
  <package android:name="com.facebook.lite" />
</queries>

第 2 步:執行 ContentProvider API

加入 ContentProvider 程式碼以從 Facebook 和 Instagram 應用程式取得引介歸因資料。您需要在首次啟用應用程式時取得這項資料。

Cursor c = null;
try {
    String [] projection = { "install_referrer", "is_ct", "actual_timestamp", };
    Uri providerUri = null;
    
    // This IF statement queries the facebook app first.
    // To query from the instagram app first, change the sequence of the IF statement

    if (context.getPackageManager().resolveContentProvider(
           "com.facebook.katana.provider.InstallReferrerProvider", 0) != null) {
       providerUri = Uri.parse(
           "content://com.facebook.katana.provider.InstallReferrerProvider/" + FB_APP_ID);
    } else if (context.getPackageManager().resolveContentProvider(
           "com.instagram.contentprovider.InstallReferrerProvider", 0) != null) {
       providerUri = Uri.parse(
           "content://com.instagram.contentprovider.InstallReferrerProvider/" + FB_APP_ID);
    } else if (context.getPackageManager().resolveContentProvider(
           "com.facebook.lite.provider.InstallReferrerProvider", 0) != null) {
       providerUri = Uri.parse("content://com.facebook.lite.provider.InstallReferrerProvider/" + FB_APP_ID);
    } else {
       return null;
    }

    c = context.getContentResolver().query(providerUri, projection, null, null, null);
    if (c == null || !c.moveToFirst()) {
       return null;
    }

    int installReferrerIndex = c.getColumnIndex("install_referrer");
    int timestampIndex = c.getColumnIndex("actual_timestamp");
    int isCTIndex = c.getColumnIndex("is_ct");
    String installReferrer = c.getString(installReferrerIndex); // serialized and encrypted attribution details

    // TODO: 
    // 1. deserialize installReferrer (convert String to JSON)
    // 2. decrypt attribution details in install_referrer.utm_content.source.data using 
    // key: GPIR decryption key 
    // nonce: retrieve from installReferrer.utm_content.source.nonce
    // data: retrieve from installReferrer.utm_content.source.data
    // decrypt data 

    long actualTimestamp = c.getLong(timestampIndex); // timestamp in seconds for click/impression
     int isCT = c.getInt(isCTIndex); // VT or CT, 0 = VT, 1 = CT
           
} catch (Exception e) {
    return null;
} finally {
    if (c != null) {
        c.close();
    }
}

反序列化和解密資料的步驟與安裝引介來源指南所述的類似。

為每個 Meta 應用程式反序列化後,從 install_referrer 接收的資料結構回應將包括下列內容:

  • actual_timestamp:此值是點擊或瀏覽發生時,以秒為單位的時戳
  • is_ct:此值可為表示點擊的 1 或表示瀏覽的 0
  • install_referrer:此值是經加密的 GPIR 歸因資料

JSON 回應範例

{
  is_ct=1,
  actual_timestamp=123,
  install_referrer={
    utm_campaign = fb4a,
    utm_content: {
      source: {
        data: “7fb9bd76…”, // encrypted attribution information
        nonce: “1234” // nonce from encryption
      },
      a: <app_id>,
      t: <timestamp>
    }
    utm_source : “apps.facebook.com” //OR “apps.instagram.com”
  }
}

解密 install_referrer.utm_content.source 後的範例資料

{ 
  "ad_id":"6110809314024", 
  "adgroup_id":"6110808725024", 
  "adgroup_name":"RTG_Storie_", 
  "campaign_id":"6110808710224", 
  "campaign_name":"Mobex_Conversiones_Storie_Android_21 a 31 de Diciembre_OP39895",
  "campaign_group_id":"6110808710624", 
  "campaign_group_name":"Mobex_Instagram Storie_ Conversiones_ Diciembre OP 43918",
  "account_id":"485495091598353",
  "ad_objective_name":"CONVERSIONS", 
  // data included for Instagram ads
  "is_instagram":true,
  "publisher_platform":"instagram",                
  "platform_position":"instagram_stories"          
}

第 3 步:刪除重複資料

如果您已有 GPIR 廣告宣傳活動的中繼資料,便應跟從現有的 GPIR 刪除重複資料流程。

使用安裝引介來源刪除重複資料

Meta 安裝引介來源和 GPIR 點擊安裝次數的安裝或宣傳活動數值相同,因此您可以使用在 install_referrer 傳回的資料移除重複資料。

由於 GPIR 並不支援觀看安裝次數和跨連線階段的點擊安裝次數,您需使用 Meta 安裝引介資料。

如果您沒有 GPIR 廣告宣傳活動中繼資料數據,則可根據自己有否與流動衡量合作夥伴(MMP)合作,以決定是否刪除重複資料。

透過 MMP 刪除重複資料

流動衡量合作夥伴(MMP)能夠存取沒有勝出廣告聯盟(因為歸因到 Meta 或自主安裝)的安裝次數之橫列級別歸因資料。您可以透過 Meta 安裝引介來源檢查有否提供安裝引介來源。如有,您可將安裝視為由 Meta 促成,而所提供的安裝引介來源資料是該次安裝的廣告宣傳活動中繼資料。

在無 MMP 的情況下刪除重複資料

Meta 安裝引介來源提供安裝的最後觸點資料,包括廣告宣傳活動中繼資料、最後觸點的實際時戳,以及最後觸點動作類型,例如瀏覽或點擊。您可以透過從其他廣告聯盟取得的歸因資料,比較最後觸點動作類型和最後觸點時戳,從而決定勝出的廣告聯盟。

驗證設定

首先,請確保您正在使用支援這項解決方案的應用程式版本。最低版本如下所示:

  • Facebook:v428
  • Instagram:v296
  • Facebook Lite:v411

您可按照以下步驟驗證設定:

  1. 使用廣告管理員的「預覽」功能插入測試宣傳活動
  2. 在 Facebook 或 Instagram 上找出並點擊該廣告
  3. 步驟 2 的程式碼中加入停頓點或記錄

您的應用程式應該會收到回應解密回應即可查看宣傳活動資料。

選項 2:透過 MMP 使用支援整合

第 1 步:更新您的流動衡量合作夥伴(MMP)SDK

將 MMP SDK 更新為整合了 Meta 安裝引介來源的版本:

  • AppsFlyer SDK:AppsFlyer SDK v6.14.2 及以上版本
  • Adjust SDK:Adjust SDK v4.36.0 及以上版本(Flutter 4.36.0 及以上版本、Unity 4.37.0 及以上版本)
  • Singular SDK 或 S2S API:Singular SDK v12.3.0 及以上版本(Unity 4.2.0 及以上版本、React Native 3.3.0 及以上版本、Unreal 2.2.0 及以上版本)
  • Kochava SDK:Kochava Android SDK v5.1.0 及以上版本
  • Airbridge SDK:Airbridge Android SDK v2.22.3 及以上版本
  • Branch SDK:Branch SDK v5.10.1 及以上版本

第 2 步:確保您的 Facebook 應用程式編號已與您的 MMP SDK 連結

請透過下方連結查看指示。

第 3 步:視乎所用的 MMP,您可能需要更新應用程式的 Android 資訊清單檔案

請透過下方連結查看指示。

  • Kochava 指示(前往「Meta/Facebook」區塊)
  • AppsFlyer、Adjust、Singular 和 Airbridge 會透過各自的 SDK 自動處理這一步
  • 如果您使用的是 Flutter SDK 或 React SDK,而不是您 MMP 的 Android SDK,請聯絡您的 MMP

第 4 步:分享您的安裝引介來源解密密鑰,以便 MMP 能夠將引介來源中繼資料解密

備註:如果您已為 Google Play 商店安裝引介來源完成此操作,則無須執行此步驟。