マニフェストを使用したファクトリープレインストール計測 (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以降を実装してください。

このメソッドは最も堅牢であるため推奨されるメソッドです。ただし、今後発生する全てのアプリインストールに対して、プリインストールメディアソースが常に計測されますのでご注意ください。これはインストールが新規か再インストールかに関わらず適用されます。

システムプロパティメソッドは、ディベロッパーとデバイス製造元側の両方のアクションが必要です。

デベロッパー

製造元またはメディアソースにAPKを提供する必要があります。デフォルトAPKが提供されます。このメソッドでは別のAPKは必要ありません。

pre_install.appsflyer という名前のファイルを作成してください。このファイルに、キーと値のペアを追加してください。

<package_name>=<media_source>

例:

com.appsflyer.sampleapp=huawei

追加のプリインストールパラメーターを指定する方法:

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

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

 重要!

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

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

pre_install.appsflyer ファイルを生成したら、メディアソースまたは製造元にAPKと一緒に提供してください。

製造元

製造元は、選択したファイルパスに pre_install.appsflyer を配置します。pre_install.appsflyer ファイルの権限は、447に設定してください。

次に、製造元は、pre_install.appsflyer ファイルにポイントするようにシステムプロパティファイルを編集します。そのためには、製造元は、システムプロパティにキーと値のペアを追加する必要があります。

 注意

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

Androidシステムプロパティにキーと値ペアを追加する

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

別の方法は、Androidファイルシステムから、system-properties-file を取得し、編集し、それを戻す方法です。

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 644 /system/build.prop
adb reboot

メリット

メディアソースや製造元ごとに異なるAPKを管理する必要はありません。Google Play上のアプリに変更を加えたり、パスを追加する必要がありません。製造元はカスタムパスを使用でき、異なるデバイスで実行されている複数のプリインストールアプリ間には依存関係がありません。

この方法では、プリインストールキャンペーンとメディアソースへの計測が保証されます。ユーザーがアプリを起動する前にアプリを更新したり、広告をクリックしてからアプリをインストールした場合でも、プリインストールはプリインストールのメディアソースまたは製造元の成果に紐づきます。

デメリット

一部の作業がメディアソースまたは製造元の責任となります。ディベロッパーは、メディアソースや製造元が必要なステップを実行しているかを確認する必要があります。さらに、この方法はアプリディベロッパー側でテストするのが困難な場合があります。

SDK APIメソッド

SDK 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 プロパティは、オペレーティングシステムで設定されているとおりの製造元の名前を保持します。このプロパティを使用しても、その製造元のデバイス間で同じ形式で製造元名が取得されるとは限りません。このプロパティに製造元名が期待どおりに保持されていることを確認してください。
  • campaignsiteId は任意のパラメーターですが、setPreinstallAttribution メソッドでは必須です。campaignsiteId を指定したくない場合は、どちらも null を渡してください。

メリット

SDK APIメソッドでは、プログラムで製造元の名前を取得できます。製造元に関わらず、SDKメソッドはデバイスから直接名前を取得します。つまり、連携する全ての製造元に対して1つのAPKを使用することができます。

setPreinstallAttribution メソッドでは、キャンペーン名を指定できます。各メーカーまたはメディアソースを「Pre-install」としてまとめずに、異なるキャンペーンに分けることができます。

デメリット

製造元と直接連携している場合は、製造元用とGoogle Play用の2つのバージョンのAPKを管理する必要があります。いずれの場合も、複数のAPKが必要です。

広告主に代わって製造元と連携する複数のメディアソースを使用している場合は、メディアソースごとに別々の APK を管理する必要があります。

場合によっては、インストールがプリインストールメディアソースに紐づかないことがあります。

  • 新規デバイスを持つユーザーが、プリインストールアプリを起動せずに、Google Playから直接そのアプリを更新した場合、このインストールはオーガニックと見なされます。
  • 新規デバイスを持つユーザーが広告をクリックしたあとにGoogle Playからアプリを更新した場合、このインストール成果は広告を配信したメディアソースに紐づきます。

 ヒント

上記のシナリオが起こった場合でも、インストールがプリインストールとしてカウントされるように、アプリにロジックを実装することができます。Play Store APKとプリインストール用のAPKにこのロジックを実装する必要があります。

 

特定の製造元のデバイスとモデルにアプリがプリインストールされていることが分かっています。また、これらのデバイスは特定のキャリアで動作しています。

アプリの起動時にこれらの条件を確認することができます。これらの条件に該当する場合、インストールはプリインストールとして記録されます。このロジックはPlay Store APKにも実装されているため、アプリを起動する前にアプリを更新したとしても、インストールはプリインストールとして記録されます。

マニフェストファイル内の名前のメソッド

マニフェスト内の名前の方法では、アプリのマニフェストファイルにメタデータタグを追加する必要があります。メディアソースまたは製造元ごとに、このステップを繰り返す必要があります。

メタデータタグをクロージングアプリケーションタグの前に追加してください。

...
    <meta-data android:name="AF_PRE_INSTALL_NAME" android:value="market_name"/>
  </application>
</manifest>

アプリを初めて起動する際に、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. pid がJSONに存在しない場合、メディアソースは「None」と表示されます。
    3. JSON設定で、c が存在しない場合、キャンペーン名は「Pre-install」となります。
    4. JSON の形式が正しくない場合、渡された文字列はメディアソース名として扱われます。

    pre_install.appsflyer ファイルを生成したら、メディアソースまたは製造元にAPKと一緒に提供してください。

  2. メディアソースまたは製造元に問い合わせ、彼らがファイルを格納するパスについて同意してください。推奨されるパスは「/data/local/tmp/pre_install.appsflyer」です。
  3. パスについて同意したら、マニフェストファイルで指定します。次のスニペットをクロージングアプリケーションタグの前に配置してください。
    <meta-data android:name="AF_PRE_INSTALL_PATH" 
          android:value="/data/local/temp/pre_install.appsflyer" />
    

製造元

製造元は、合意されたパスにファイルを配置する必要があります。pre_install.appsflyer ファイルの権限は 447 に設定する必要があります。

アプリを起動すると、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を管理する必要があります。

デフォルト以外のパスを使用する場合は、員周防t-るがプリインストールメディアソースに紐づかない場合があります。

  • 新規デバイスを持つユーザーが、プリインストールアプリを起動せずに、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」に紐づくインストールがプリインストールキャンペーン経由の成果であることが分かります。


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

  3. プリインストールキャンペーンで連携している全ての製造元やメディアソースに対して、この手順を繰り返してください。

特殊なケース

同じデバイスに複数のプリインストールアプリがある場合

同じデバイスにインストールされている複数のアプリのキャンペーンがある場合は、次の4つの方法のいずれかを使用して計測できます。

  • マニフェストファイル内の名前メソッド:各アプリに対して、各アプリのManifest.xmlでメディアソースまたは製造元を指定してください。
  • SDK API メソッド:各アプリに対して、プリインストールのSDK APIメソッドでメディアソースまたは製造元を指定してください。
  • システムプロパティまたはパスウェイメソッド:pre_install.appsflyer ファイルにて、アプリとそれに対応するメディアソースを指定できます。各アプリの情報は、ファイル内で新しい行に追加してください。例:
    com.appsflyer.tester=market_name
    com.newapp.newapp=market_name
    com.game.king=market_name

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

連携しているメディアソースまたは製造元がAppsFlyerのパートナーである場合は、インストールに対するポストバックを有効にできます。

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

例えば、market_name と連携している場合、pid はmarket_name_int となります。連携パートナーの計測リンクを確認することで、pid を確認できます。

代理店

現在、代理店にプリインストールの成果を紐づけることはできません。

af_prt(代理店名パラメーター)がプリインストールデータの一部であり、ユーザーがプリインストールアプリを起動した場合:

  • ユーザーは、代理店が使用しているメディアソース (pid=) に紐づきます。
  • クライアントは全てのユーザーレベルデータにアクセスできます。
  • ユーザーは代理店の成果には紐づきません。
  • 代理店はユーザーレベルデータにアクセスできません。