Metaインストールリファラー

このドキュメントでは、AndroidアプリのMetaインストールリファラーを使用して、アプリのインストールを目的とするFacebook、Instagram、Audience Networkの広告キャンペーンのメタデータを取得する方法を説明します。Google Playインストールリファラー(GPIR)は同じセッションのクリックスルーインストールに関する情報のみを提供しますが、Metaのインストールリファラーには次のデータが含まれます。

  • ビュースルーインストール(VT)
  • クリックスルーインストール(CT)
  • 複数セッションのクリックスルーインストール

AndroidアプリキャンペーンのためにMetaインストールリファラーを設定するオプションには、ダイレクト連携モバイル測定パートナー(MMP)によるサポート連携の2つがあります。

オプション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におけるCTインストールまたはキャンペーンの値は同一なので、install_referrerに返されたデータを使用して重複データを削除することができます。

VTとクロスセッションCTの場合、Metaのインストールリファラーデータを使用してください(GPIRではサポートされていません)。

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 or 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: 使用しているMMP SDKにFacebookアプリIDが関連付けられていることを確認する

以下のリンクから手順を確認してください。

ステップ3: アプリのAndroid Manifestファイルをアップデートする(一部のMMPのみ)

以下のリンクから手順を確認してください。

  • Kochavaの手順(Meta/Facebookセクションに移動)
  • AppsFlyer、Adjust、Singular、Airbridgeは、それぞれのSDKがこのステップを自動で実行します
  • Android SDKの代わりにFlutter / React SDKを使用している場合は、該当するMMPを確認します

ステップ4: インストールリファラー復号化キーを共有して、使用しているMMPがリファラーメタデータを復号化できるようにする

注: Google Playストアインストールリファラーですでに行っている場合は、このステップは必要ありません。