Android SDKのダウンロード&インテグレーションガイド (v4.3.2) - AppsFlyer SDK Integration - Android

こちらは旧バージョンのSDKです: 4.3.2

最新版はこちら

注:今回の変更はメジャーバージョン変更にあたるため、本ドキュメントをよくお読みいただき、全ての変更点について必ずご承知ください。V.3.3.xから4.3.2への移行の詳細についてはこちらをご確認ください。

AppsFlyerのSDKはアプリのインストールとイベント計測機能を提供しています。非常に堅牢(現在まで80億以上のSDKのインテグレーションが行わています)で、セキュリティ度が高く、軽量でとても埋め込みが簡単です。

インストール、アップデートそしてセッション(以下の必須のステップをたどる必要があります)を測定することができます。またインストールに留まらないアプリ実装後のアプリ内イベント(アプリ内購入、ゲームレベル等)を計測し、ROIとユーザーエンゲージメントレベルを評価することができます。

計測に最低限必要なステップは以下に説明されています。任意のオプション機能についてもそれ以降のセクションで説明しています。

AppsFlyer Android SDKはAndroid 2.3およびそれ以上に対応しています。

以下のセクションがインテグレーションガイドでカバーされています。

  • Android SDKダウンンロード
  • 本バージョンでの更新点
  • SDKのアプリへの埋め込み(必須)
  • SDKの初期化およびインストールイベント(計測に最低限必要な手順)
  • アプリ内イベントの計測API(任意)
  • 上級インテグレーション
  • SDK導入テストの実施

Android SDKダウンロード

Android SDK jarをダウンロードするには、こちらをクリックしてください。

AppsFlyerのサンプルアプリの詳細はこちらをご確認ください。

  1. 本バージョンでの変更点
  • Android OS 2.3の問題を解決しました。
  • SDKは今回からシングルトンになっています。これは全てのAPIへのコールが以下のとおり呼び出される必要があることを意味します。
AppsFlyerLib.getInstance().setCustomerUserId("myId");
  • アプリアンインストールトラッキング – アプリのアンインストールを追跡することができます。
  • SetAppsFlyerKey()メソッドは削除され、新しいinitメソッド(例:getInstance().startTracking)を利用することでdev keyを受け取れるようになります。
  • sendTracking(),onActivityPause(), onActivityResume()は削除されました。SDKが自動的にローンチを検出します。
  • ディープリンク ディープリンクをサポートするアクティビティについては、デベロッパーは表示されたアクティビティのonCreate()より以下コードを通り呼び出す必要があります。
AppsFlyerLib.getInstance().sendDeepLinkData(this)

こちらはアプリがバックグラウンドで動作していない時にのみ必要になります。

  • Android IDおよびIMEIの収集 – これらのデータを収集するためのロジックが変更になりました。以下をご確認ください。

アプリがGoogle Play Servicesを含んでいる場合:

  • OSのバージョンがKitKat(4.4)より高位の場合、IMEIおよびAndroid IDはSDKによって収集されません。
  • デベロッパーはこれらのパラメータを以下を利用して提供することができます:
AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE")
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE")

アプリがGoogle Play Servicesを含んでいない場合、

  • IMEIおよびAndroid IDはSDKによって収集されます
  • デベロッパーはIMEIおよびAndroid IDの収集を以下のメソッドを利用してオプトアウトすることができます。

注:少なくとも一つの識別子は適切なアトリビューションのために収集される必要があります。

AppsFlyerLib.getInstance().setCollectIMEI(false)
AppsFlyerLib.getInstance().setCollectAndroidID(false)
  1. SDKのアプリへの埋め込み(必須)

以下のステップがインストールとセッションを測定するのに必須になります。

2.1  AppsFlyer SDKをProjectに追加

AF-Android-SDK.jarをプロジェクトのクラスパスに追加します。

2.2  必要なパーミッションの設定

AndroidManifest.xmlに以下のパーミッションを含める必要があります。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

*READ_PHONE_STATEパーミッションはオプションです。

このパーミッションを追加すると、通信事業者による端末識別番号(IMEI)のトラッキングが可能になります(Google Play 以外でのトラッキングに必要です)。

2.3  Install Referrer Broadcast ReceiverをAndroidManifest.xmlに設定

Android アプリは、同じインテントフィルターアクションを持つレシーバーを複数設定することはできません。

AppsFlyer では INSTALL_REFERRER を自動的に他の全てのレシーバーにブロードキャストするソリューションを提供しています。AndroidManifest.xml 内で、次のレシーバーを INSTALL_REFERRER の最初のレシーバーとして追加し、receiver タグが application タグ内にあることを確認してください:

<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
  <intent-filter>
     <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>

複数のレシーバーを使用する場合は、Manifest.xml を次のように設定する必要があります:

<!—The AppsFlyer Install Receiver is first and will broadcast to all receivers placed below it -->
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
  <intent-filter>
     <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>
<!—All other receivers should follow right after -->     
<receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true">
 <intent-filter>
      <action android:name="com.android.vending.INSTALL_REFERRER" />
 </intent-filter>
</receiver>
<receiver android:name="com.admob.android.ads.analytics.InstallReceiver" android:exported="true">
      <intent-filter>
          <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
</receiver>

アプリのコンテキストからアプリのインストールデータにアクセスするレシーバーを追加する場合は、こちらをクリックしてください。

2.4 アプリへGoogle Play Servicesを埋め込む

AppsFlyer では、計測精度を向上する Google の広告 ID を計測できます。

Google の広告 ID(advertising ID)の追加方法は以下の通りです。

  1. Google Play Services SDK をインストールしてプロジェクトにインポートします。ダウンロードの詳細はこちらをご確認ください。
  2. xml に次のエントリを、application 内の最後のエントリ(</application>の直前)として追加します:
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />

AppsFlyer では、Android Advertiser ID の取得に Google Play Services ライブラリを使用します。このライブラリはその他の追加サービスを提供していますが、ビルドプロセスの中で ProGuard を使うとフットプリントが軽くなります。弊社では Google Serviceから広告パッケージのみを使用します。プロジェクトのサイズを最適化したい場合は、その他のパッケージを省いてください。詳細は以下を参照ください:

https://developers.google.com/android/guides/setup.

参照: https://developer.android.com/google/play-services/setup.html

  1. SDK の初期化&インストールイベント(計測に最低限必要な手順)

注:これはアプリインストールを計測し始めるために最低限必要な手順ですのでご注意ください。

SDK の初期化をするために、以下のコードを onCreateファンクションに追加します:

AppsFlyerLib.getInstance().startTracking(this,"[Dev_Key]");

[Dev_Key] を独自の Dev_Key に置き換えます(独自の Dev_Key はアカウントへログインし、AppsFlyer 管理画面から“Settings” > “Integrate the SDK into...“ から取得できます)。

この API によって、AppsFlyer でインストール、セッション、アップデートを検出できます。

重要:  

AppsFlyerはフォアグラウンドおよびバックグラウンドを自動的に認識するようになったため、sendTrackingは削除されました。

  1.  アプリ内イベントの計測 API(任意)

このAPIは AppsFlyerがインストール後のアプリ内イベントの計測を可能にします。これらのイベントは広告主によって定義され、イベント名に加えて任意のイベント値が含まれます。

これらのイベントによって、ロイヤル ユーザーがどのようにアプリを発見し、特定のキャンペーンやメディアから成果に至ったかをトラッキングできます。ROI (投資収益率) や LTV (ライフタイム バリュー)を計測するために、計測したいアプリ内イベントを慎重に定義するのをおすすめします。

シンタックス:

public static void trackEvent(Context context, String eventName, Map eventValues)
context - getApplicationContext() を使用してください
eventName は、イベントの名前を定義する任意の文字列です。
eventValues はリッチイベントを構成するイベントパラメータです。
収益(revenue)をアプリ内リッチイベントの一部として計測:af_revenue (constant)を使用してください。
AFInAppEventParameterName.REVENUE

イベントパラメータは収益をアプリ内リッチイベントの一部として計測します。正または負の任意の数値を設定できます。

注:af_price

AFInAppEventParameterName.PRICE

はイベントの説明的なパラメータであり、収益として計測するためのものでなく、収益額や LTV 計測に反映されませんので注意ください。

例1:「レベル達成」アプリイベント

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(content,AFInAppEventType.LEVEL_ACHIEVED,eventValue);

これはイベントタイプ “af_level_achieved” を以下のイベント値と共に生成します:

{af_level: 9, af_score: 100}

例2:購入イベント

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(content,AFInAppEventType.PURCHASE,eventValue);

これはイベントタイプ “af_purchase” を以下のイベント値と共に生成します:

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

上記の購入イベントは$200 の収益を含み、これは収益として管理画面に反映されます。

注:アプリ内イベント名は45文字以下である必要があります。45文字以上のイベントネームは管理画面上に表示されず、ローデータレポート、PullおよびPush APIにのみ表示されます。

AppsFlyerのAndroid向けリッチアプリ内イベントの詳細については、こちらをご覧ください。

  1.  上級インテグレーション

以下のAPIは任意であり、AppsFlyer SDKの上級インテグレーションの一部です。

5.1  通貨コードの設定 (任意)

AppsFlyer 側に送信される各リッチアプリ内イベントに使用される各通貨コードに加えて、以下のAPIを用いてグローバル通貨コードを設定できます。グローバル通貨コードは、

AFInAppEventParameterName.CURRENCY

がアプリ内イベントデータとして送信されない場合に適用されます。

USD (米国ドル) が既定値です。使用できる ISO 通貨コードはこちらです。

通貨コードを設定するには、以下の API を用いてください:

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

5.2  AppsFlyer の独自 ID を取得 (任意)

アプリの新規インストールに対して、それぞれAppsFlyer独自のIDが生成されます。AppsFlyerの独自IDはAppsFlyerがレポートやAPIで用いる主なIDです。

AppsFlyer の独自 ID を取得するには以下の API を用いてください:

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

5.3  顧客 ID の設定 (任意)

独自の顧客IDを設定すると、独自の固有IDを、AppsFlyer IDや他のデバイスのIDと相互参照できるようになります。このIDは、ポストバックAPIとともにAppsFlyerのCSVレポート上で確認でき、広告主側の内部的なIDと相互参照することができます。

顧客 ID を設定するには:

AppsFlyerLib.getInstance().setCustomerUserId("myId");

重要事項:

  • この設定を実装あとに発生したイベントのみに顧客IDが付与されるため、顧客IDの設定は、できる限り最初の段階で設定することをおすすめします。
  • MixpanelやSwrveなどのアナリティクスツールとのAppsFlyer連携を利用する場合には、顧客IDはこのAPIを用いて設定する必要があります。

5.4 コンバージョンデータの取得(Get Conversion Data) (任意)

AppsFlyer を使うことで、リアルタイムで直接SDKレベルでユーザーのアトリビューションデータにアクセスできます。このデータをもとに、ユーザーがインストール後にアプリ初期起動で表示するランディングページをカスタマイズすることが可能です。

この機能の詳細はこちらを参照ください。

5.5  ユーザーメールアドレスの設定(任意)

AppsFlyer では、デバイスに紐付くメールアドレスをレポートする機能を提供しています。ディベロッパはメールアドレスを収集し、希望の暗号化メソッドを使って AppsFlyer 側にレポートできます。

次の暗号化メソッドが利用可能です:Sha1、MD5、plain

例:

AppsFlyerLib.getInstance().setUserEmails(AppsFlyerProperties.EmailsCryptType.MD5, 
"email1@domain.com","email2@domain.com", ….);

5.6 リターゲティング・アトリビューションのディープリングを記録(任意)

複数のアクティビティでディープリンクをサポートするためには、以下の行をOnCreate()に追加してください。

AppsFlyerLib.getInstance().sendDeepLinkData(this);

5.7  アプリ内購入の検証(任意)

AppsFlyer の SDK はアプリ内購入のサーバー検証を提供しています。購入検証の測定を設定するには、onActivityResult ファンクション内にある onActivityResult メソッドを呼び出す必要があります。

この呼び出しは自動的にアプリ内イベント「af_purchase」を生成します。

public static void validateAndTrackInAppPurchase(Context context,
String publicKey, String signature, String purchaseData, String price,
String currency, HashMap<String, String> additionalParameters);

この呼び出しには、「success」と「failure」(検証エラーを含む何らかの理由)の 2 つのコールバックブロックが含まれています。

AppsFlyerLib.getInstance().registerValidatorListener(this,new AppsFlyerInAppPurchaseValidatorListener() {
          public void onValidateInApp() {
              Log.d(TAG, "Purchase validated successfully");
          }
          public void onValidateInAppFailure(String error) {
              Log.d(TAG, "onValidateInAppFailure called: " + error);
          }
      });

5.8 エンドユーザーオプトアウト(任意)

AppsFlyerには、AppsFlyerアナリティクスから特定のユーザーをオプトアウトするための方法があります。この方法は、最新のプライバシー要件に適合しており、Facebookのデータポリシーとプライバシーポ リシーにも適合しています。既定値は NO で、計測が有効になっています。

セクション4 のSDK初期化の段階で、以下のAPIを用いてオプトアウトしてください。

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

5.9  Google Play外部のアプリインストールを計測 (任意)

【重要】Google Play がデフォルトのストアです。Google Playのみでアプリを公開している場合は、このステップをスキップしてください。

Google Play 外部のインストールを計測するためには、チャンネル/ストアをアプリのAndroidManifest.xmlで独自のチャネルまたはストア名と一緒に各 APKで設定する必要があります。CHANNEL値は、大文字、小文字を区別しますのでご注意ください。

例:

Amazon:
<meta-data android:name="CHANNEL" android:value="Amazon" />
Standalone:
<meta-data android:name="CHANNEL" android:value="Standalone"/>
Verizon (Pre-Installed):
<meta-data android:name="CHANNEL" android:value="Verizon" />

注:

  • AppsFlyer管理画面でアプリを設定する際に、CHANNEL値を設定する必要があります。
  • メタデータタグは</application>タグの前に配置してください。

外部アプリのインストールを計測する方法について詳細は、こちらを参照ください。

5.10 アプリアンインストールの測定

AppsFlyerを使うと、アプリアンインストールの追跡ができるようになります。

この進化した機能についてより詳しくお知りになりたい方は、こちらをご確認くだだい。

  1.  SDK 導入テストの実施

 Play Storeにアプリを提出する前/後にSDK導入をテストする方法は、こちらをご覧ください。

この記事は参考になりましたか? 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています