どのようにお手伝いできますか?

AppsFlyerによる工場出荷前のプリインストール計測:マニフェストの使用(Android)

  • 更新

概要:工場出荷前に端末へインストールされたアプリのインストールを、端末メーカーにアトリビューションします。注意:その他のプリロードアトリビューション方式も参照してください。

pre-install-intro-breakdown.png

はじめに

プリインストールキャンペーンとは

プリインストールキャンペーンでは、オンラインキャンペーンを実施せずに、多くのユーザーにアプローチできます。

アプリの所有者は、端末メーカーに工場出荷前の端末へアプリをプリインストールするよう依頼できます。

アプリの所有者に代わってさまざまなメーカーと連携する、サードパーティのメディアソースと協力して実施することもできます。

 重要!

AppsFlyerは、アプリが初めて起動された時点でインストールをカウントします。そのため、表示されるプリインストール数は、アプリを起動したユーザー数です。アプリがプリインストールされた端末の台数ではありません。

プリインストールキャンペーンによるインストールを記録するメリット

プリインストールキャンペーンをアトリビューションすると、次の項目を計測できます。

  • プリインストールされたアプリを起動したユーザー数
  • 各メーカーが獲得したアプリユーザー数
  • 各ユーザーのLTV。これにより、価値の高いユーザーを獲得しているメーカーを判断できます。

プリインストールキャンペーンの計測方法

プリインストールキャンペーンの計測には、4つの方式があります。詳しくは、この記事の設定セクションを参照してください。

プリインストールデータの確認

プリインストールは、他のインストールイベントと同様に、アトリビューションされたメディアソースのデータとしてAppsFlyerダッシュボードに表示されます。ただし、キャンペーン名は常にPre-installになります。

 注意

SDK API方式では、プリインストールのキャンペーン名を個別に指定できます。

 注意

2022年5月24日以降、次のように表示されます。

  • 工場出荷前のプリインストールキャンペーンのMatch_typeは、ローデータレポートでpreload_confと表示されます。
  • AppsFlyerのダッシュボードには、プリロードにつながったアドネットワークと、アプリの初回起動に貢献したアドネットワークが表示されます。詳しくは、プリロードキャンペーンを参照してください。

設定

プリインストールキャンペーンを計測する方式を、以下から選択してください。

方式名 複数のAPKが必要か プリインストールへのアトリビューションを保証するか メディアソースまたはメーカー側での作業が必要か
システムプロパティ いいえ はい はい
SDK API はい いいえ いいえ
マニフェストファイルに媒体名を指定 はい いいえ いいえ
設定ファイルのパスを指定 いいえ いいえ はい

システムプロパティ方式(推奨)

SDKバージョンV4.0+を使用してください。

この方式は最も確実性が高いため、推奨されています。ただし、以後のすべてのアプリインストールは、常にプリインストールのメディアソースにアトリビューションされる点に注意してください。これは、新規インストールか再インストールかを問いません。 0>

システムプロパティ方式では、開発者とメーカーの両方で作業が必要です。

開発者

メーカーまたはメディアソースにAPKを提供します。通常のAPKを提供してください。この方式では、別のAPKを用意する必要はありません。

pre_install.appsflyerという名前のファイルを作成します。ファイルに、次のキーと値のペアを追加します。

<0>=<1>

例:

com.appsflyer.sampleapp=huawei

プリインストール用のパラメータを追加で指定するには、次のように設定します。

pre_install.appsflyerファイルに、追加のパラメータをJSON形式で指定します。例:

com.appsflyer.sampleapp={"pid":"huawei", "c":"special_campaign","af_adset":"some_adset"}

 重要!

このオプションを使用する場合は、次の動作に注意してください。

  • ローデータでは、チャネルが「Pre-install」に設定されます。
  • JSONにpidパラメータがない場合、ローデータのメディアソースは「None」と表示されます。
  • JSONの設定にcパラメータがない場合、キャンペーン名は「Pre-install」に設定されます。
  • JSONの形式が正しくない場合、指定した文字列がメディアソース名として扱われます。

pre_install.appsflyerファイルを作成したら、APKと一緒にメディアソースまたはメーカーに渡します。

メーカー

メーカーは、任意のパスにpre_install.appsflyerファイルを配置します。 pre_install.appsflyerファイルのアクセス権限を744に設定してください。

次に、メーカーはシステムプロパティファイルを編集し、pre_install.appsflyerファイルを参照するように設定します。この設定には、システムプロパティにキーと値のペアを追加する必要があります。

 注意

この手順にはroot権限が必要です。プリインストール設定のテストにもroot権限が必要です。詳しくは、テストのセクションを参照してください。

Androidのシステムプロパティへのキーと値のペアの追加:

adb shell su
setprop ro.appsflyer.preinstall.path /data/pre_install.appsflyer

別の方法として、Androidのファイルシステムからシステムプロパティファイルを取得し、編集して戻すこともできます。

adb root
adb remount
adb pull /system/build.prop
echo ro.appsflyer.preinstall.path=/data/pre_install.appsflyer >> build.prop
adb push build.prop /system/build.prop
adb shell chmod 744 /system/build.prop
adb reboot

メリット

メディアソースやメーカーごとに、異なるAPKを管理する必要がありません。 Google Playで配信するアプリを変更してパスを追加する必要がありません。メーカーは任意のパスを使用できます。また、異なる端末で動作する複数のプリインストールアプリ間に依存関係はありません。

この方式では、プリインストールキャンペーンとメディアソースへのアトリビューションが保証されます。ユーザーが初回起動前にアプリを更新した場合や、広告をクリックした後にアプリをインストールした場合でも、プリインストールのメディアソースまたはメーカーにアトリビューションされます。

デメリット

メディアソースまたはメーカー側が、作業の一部を担う必要があります。開発者は、メーカーまたはメディアソースが必要な手順を実施したことを確認する必要があります。また、アプリ開発者にとっては、この方式のテストがやや難しい場合があります。

SDK API方式

SDK API方式では、ネイティブのAPIを使用して、プリインストールのアトリビューション先となるメーカー名またはメディアソース名を指定できます。

この方式を使用するには、SDKを初期化する前に、AFApplicationクラスに次のメソッド呼び出しを追加します。

setPreinstallAttribution(String mediaSource, String campaign, String siteId)

メディアソースと連携する場合

AppsFlyerLib.getInstance().setPreinstallAttribution("MEDIA_SOURCE_NAME", "CAMPAIGN_NAME", "123");
AppsFlyerLib.getInstance().init(AF_DEV_KEY , conversionListener , getApplicationContext());

メーカーと連携する場合

AppsFlyerLib.getInstance().setPreinstallAttribution(android.os.Build.MANUFACTURER, "CAMPAIGN_NAME", "123");
AppsFlyerLib.getInstance().init(AF_DEV_KEY , conversionListener , getApplicationContext());

 注意

  • メディアソースのパラメータは必須です。
  • android.os.Build.MANUFACTURERプロパティには、OSで設定されたメーカー名が格納されています。このプロパティを使用しても、同じメーカーのすべての端末で、メーカー名が同じ形式で取得できるとは限りません。このプロパティに、想定どおりのメーカー名が格納されていることを確認してください。
  • campaignとsiteIdパラメータの値は任意ですが、setPreinstallAttributionメソッドにはこれらの引数を渡す必要があります。 campaignとsiteIdを指定しない場合は、両方にnullを渡してください。

メリット

SDK API方式では、メーカー名をプログラムで取得できます。メーカーを問わず、SDKのメソッドで端末から直接メーカー名を取得できます。そのため、連携するすべてのメーカーに対して、1つのAPKを管理すれば対応できます。

setPreinstallAttributionメソッドでは、キャンペーン名を指定できます。すべてを「Pre-install」キャンペーンとして扱う代わりに、メーカーやメディアソースごとにキャンペーンを分けることができます。

デメリット

メーカーと直接連携する場合は、メーカー向けとGoogle Play向けの2種類のAPKを管理する必要があります。いずれの場合も、複数のAPKが必要です。

アプリの所有者に代わってメーカーとやり取りする複数のメディアソースと連携する場合は、メディアソースごとに個別のAPKを管理する必要があります。

次の場合、プリインストールのメディアソースにインストールがアトリビューションされないことがあります。

  • 新しい端末のユーザーが、プリインストールされたアプリを一度も起動せずにGoogle Playから直接更新した場合、インストールはオーガニックとみなされます。
  • 新しい端末のユーザーが、広告をクリックした後にGoogle Playからアプリを更新した場合、インストールは広告を配信したメディアソースにアトリビューションされます。

 ヒント

上記のケースでもプリインストールとしてカウントされるよう、アプリに判定処理を実装できます。 Google Play向けのAPKとプリインストール向けのAPKの両方に、この処理を実装してください。

例:

  • 特定のメーカーと機種の端末に、アプリがプリインストールされていることが分かっているとします。これらの端末は、特定のキャリアも使用しています。
  • アプリの起動時に、これらの条件を確認できます。条件を満たしていれば、インストールはプリインストールとして記録されます。 Google Play向けのAPKにもこの処理があるため、ユーザーが初回起動前にアプリを更新した場合でも、プリインストールとして記録されます。

マニフェストファイルに媒体名を指定する方式

この方式では、アプリのマニフェストファイルにメタデータタグを追加します。連携するメディアソースまたはメーカーごとに、この手順を行う必要があります。

applicationの閉じタグの前に、メタデータタグを追加します。


    <0/>
  1>
2>

アプリの初回起動時に、AppsFlyer SDKがマニフェストファイルのメタデータタグを検出し、その内容に応じてインストールをアトリビューションします。

メリット

マニフェストファイルに媒体名を指定する方式は、プリインストールキャンペーンを簡単にアトリビューションできる方式です。マニフェストに追加するタグは1つだけです。また、キャンペーンを計測するために、メディアソースやメーカー側で作業を行う必要はありません。

デメリット

メタデータタグにメディアソース名またはメーカー名を指定するため、メディアソースやメーカーごとに異なるAPKを管理する必要があります。

次の場合、プリインストールのメディアソースにインストールがアトリビューションされないことがあります。

  • 新しい端末のユーザーが、プリインストールされたアプリを一度も起動せずにGoogle Playから直接更新した場合、インストールはオーガニックとみなされます。
  • 新しい端末のユーザーが、広告をクリックした後にGoogle Playからアプリをインストールした場合、インストールは広告を配信したメディアソースにアトリビューションされます。

設定ファイルのパスを指定する方式

 注意

SDKバージョン4.5.0以降でサポートされています。

この方式では、開発者とメーカーの両方で作業が必要です。

開発者

この方式では、メディアソース名またはメーカー名が記載されたファイルのパスを指定できます。次の3つの手順を行ってください。

  1. キーと値のペアを記載したファイルを作成します。ファイル名はpre_install.appsflyerにします。ファイルに、<PACKAGE_NAME>=<MEDIA_SOURCE>の形式でキーと値のペアを指定します。例:com.appsflyer.sampleapp=my_media_source。

    プリインストール用の追加パラメータの指定

    ファイル内に、プリインストール用の追加パラメータをJSON形式で指定できます。例えば、pre_install.appsflyerファイルに次のキーと値のペアを追加できます。

    com.appsflyer.sampleapp={"pid":"huawei", "c":"special_campaign","af_adset":"some_adset"}
    

     重要!

    このオプションを使用する場合は、次の動作に注意してください。

    1. af_channelに「Pre-install」が設定されます。
    2. JSONにpidがない場合、メディアソースは「None」と表示されます。
    3. JSONの設定にcがない場合、キャンペーン名は「Pre-install」に設定されます。
    4. JSONの形式が正しくない場合、指定した文字列がメディアソース名として扱われます。

    pre_install.appsflyerファイルを作成したら、APKと一緒にメディアソースまたはメーカーに渡します。

  2. メディアソースまたはメーカーと相談し、ファイルの配置先のパスを決めます。推奨するパスは「/data/local/tmp/pre_install.appsflyer」です。
  3. 配置先が決まったら、そのパスをマニフェストファイルに指定します。 applicationの閉じタグの前に、次のコードを追加します。
    <0/>
    

メーカー

メーカーは、合意したパスにファイルを配置する必要があります。 pre_install.appsflyerファイルのアクセス権限を744に設定してください。

アプリが起動すると、SDKはマニフェストファイル内の指定パスを確認し、そのパスでファイルを探します。ファイルが見つかると、記載されているメディアソースにインストールをアトリビューションします。

メリット

AppsFlyerは、次の2つのデフォルトのパスでpre_install.appsflyerファイルを探します。

/data/local/tmp/pre_install.appsflyer
または
/etc/pre_install.appsflyer

メーカーによっては、デフォルト以外のパスにファイルを配置したい場合があります。その場合は、マニフェストファイルにデフォルト以外のパスを指定できます。

 重要!

デフォルト以外のパスを使用するには、SDKバージョン4.8以降が必要です。

デフォルト以外のパスも使用できますが、代わりにシステムプロパティ方式の実装を推奨します。

デメリット

メディアソースやメーカーごとに、個別のpre_install.appsflyerファイルを管理する必要があります。

メーカーがpre_install.appsflyerファイルをデフォルト以外のパスに配置したい場合があります。その場合は、デフォルト以外のパスごとに個別のAPKを管理する必要があります。

デフォルト以外のパスを使用すると、次の場合にプリインストールのメディアソースにインストールがアトリビューションされないことがあります。

  • 新しい端末のユーザーが、プリインストールされたアプリを一度も起動せずにGoogle Playから直接更新した場合、インストールはオーガニックとみなされます。
  • 新しい端末のユーザーが、広告をクリックした後にGoogle Playからアプリをインストールした場合、インストールは広告を配信したメディアソースにアトリビューションされます。

プリインストール設定のテスト

このセクションでは、プリインストール設定をテストして確認する方法を説明します。

 重要!

テストを開始する前に、テストに使用するデバイスを許可リストに登録してください。
また、AFApplicationクラスでデバッグログをtrueに設定してください。

AppsFlyerLib.getInstance().setDebugLog(true);

アプリでの設定の確認

 ヒント

キャッシュに関する問題を避け、適切にテストするため、ビルド前にプロジェクトをクリーンアップすることを推奨します。 Android Studioのコンテキストメニューで[Build]をクリックし、[Clean Project]を選択します。

Android Studioでアプリをビルドし、テストデバイスにインストールします。アプリが起動したら、Android StudioでLogcatを開き、「AppsFlyer」でフィルタリングします。アトリビューションされたインストールの詳細が表示されます。以下のスクリーンショットを参照してください。

pre_install_logcat.png

pre_install_logcat_2.png

AppsFlyerダッシュボードでの設定の確認

設定が成功すると、メーカーまたはメディアソースにアトリビューションされたノンオーガニックインストールがダッシュボードに表示されます。このインストールイベントは、「Pre-install」キャンペーンにも表示されます。

AppsFlyerアカウントにアクセスし、テスト対象のアプリのダッシュボードを開きます。次の手順に従ってください。

  1. オーバービューダッシュボードで、メディアソースのフィルターから対象のメディアソースを選択します。

    choose_media_source.png

  2. [キャンペーン別内訳]グラフでは、「my media source」にアトリビューションされたインストールが、Pre-installキャンペーンによるものであることを確認できます。


    集計パフォーマンスレポートでも、インストールが正しくアトリビューションされているか確認できます。このレポートでは、メディアソースとキャンペーンを確認できます。以下のスクリーンショットでは、メディアソースが「My Media Source」、キャンペーンがPre-installになっています。

  3. プリインストールキャンペーンで連携するすべてのメーカーまたはメディアソースについて、この手順を繰り返します。

特殊なケース

同じ端末に複数のアプリがプリインストールされている場合

同じ端末にインストールされた複数のアプリでキャンペーンを実施している場合、4つの方式のいずれでもアトリビューションを計測できます。

  • マニフェストファイルに媒体名を指定する方式:各アプリのManifest.xmlに、メディアソースまたはメーカーを指定します。
  • SDK API方式:各アプリで、プリインストール用のSDK APIメソッドにメディアソースまたはメーカーを指定します。
  • システムプロパティ方式または設定ファイルのパスを指定する方式:pre_install.appsflyerファイルに、各アプリと対応するメディアソースを指定できます。各アプリの情報は、ファイル内で1行ずつ記載してください。例:
    com.appsflyer.tester=<0>market_name0>
    com.newapp.newapp=<0>market_name0>
    com.game.king=<0>market_name0>

インストールポストバックの送信

連携するメディアソースまたはメーカーがAppsFlyerパートナーであれば、インストールのポストバックを有効にできます。

その場合は、メディアソース名が、AppsFlyerで設定されているメディアソースのpidと一致していることを確認してください。

例えば、market_nameと連携している場合、そのpidはmarket_name_intです。 pidは、連携済みパートナーのアトリビューションリンクで確認できます。

代理店

現在、プリインストールを代理店にアトリビューションすることはできません。 

プリインストールデータにaf_prt(代理店名のパラメータ)が含まれ、ユーザーがプリインストールされたアプリを起動した場合:

  • ユーザーは、代理店が使用するメディアソース(pid=)にアトリビューションされます。
  • 広告主は、ユーザーレベルのすべてのデータにアクセスできます。
  • ユーザーは、代理店にはアトリビューションされません。
  • 代理店は、ユーザーレベルのデータにアクセスできません。