概要:モバイルアプリまたはCTVアプリ開発者と協力して、 AppsFlyerのSDKを Android または iOS アプリに実装およびインストールしてください。基本的な連携タスクが完了すれば、インストールとアプリ内イベントの計測の準備が整います。
アプリにDevキーを実装する
AppsFlyerではDevキーを使用してアカウントを一意に識別します。Devキーは、SDKがアカウントに属するデータを安全に送受信するために必須です。開発者はSDKをインストールして連携し、Devキーを埋め込む必要があります。
Devキーを取得する
開発者がSDKをインストールして連携する前に、Devキーを取得する必要があります。
- AppsFlyerのサイドメニューから、設定 > アプリ設定を選択してください。
- Devキーをコピーして、アプリ開発担当に渡してください。
開発担当者にDevキーを提供する
Devキー、App ID、AppsFlyer API v2 トークンをモバイル開発者に提供し、以下の対応を依頼してください:
- SDKの自動インストールと実装には、SDK統合ウィザードを使用すること
- ステップバイステップの手順を使用して、SDKをインストールして実装すること
SDK実装を進めるにあたって
AppsFlyer SDKの実装を計画する際には、まずアプリの起動フローにおいてどこでSDKを初期化し、起動するかを決定する必要があります。
基本的な指針としては、アプリ起動後にできるだけ早くSDKにデータを送信させることです。これにより、SDKはインストールやセッション内で発生したすべてのアプリ内イベントを正確に把握することができます。
ただし、GDPRやCCPAなどのプライバシー保護規制に準拠するにあたって、ユーザーの情報共有の同意を得るまで、AppsFlyerへのデータ送信を遅らせる必要があることも多いのでご注意ください。
AndroidネイティブでのSDK起動
SDKを起動するクラスの選択
SDKをグローバルApplication
クラスで起動するか、Activity
クラスで起動するかを選択してください。
-
グローバル
Application
クラスでのSDK起動: 一般的に、グローバルApplication
クラス/サブクラスでSDKを初期化することは良い方法です。これは、Application
クラスがアプリのUIが表示される前に読み込まれて初期化されるためです。これにより、ディープリンクを含むあらゆるシナリオでSDKを開始することが保証されます。 -
Activity
クラスでのSDK起動(遅延起動):ユーザーがデータ共有についてオプトインを選択できるようにする際には、こちらの選択肢になります。これは、ユーザーの同意を得るためには、Activity
クラスでUIを表示する必要があるためです。
Android開発者向けの実装手順
- 以下の決定について開発者に知らせてください。
- SDKを起動するクラスは
Application
かActivity
か - どのオプトイン / オプトアウトシナリオを利用するか
- SDKを起動するクラスは
- 開発者に次の参照リンクを送信してください。
iOSネイティブでのSDK起動
iOSでSDKの起動を遅延させる方法について
SDKの起動方法を計画する際の重要なポイントは、エンドユーザーによる同意が得られるまで、start
を遅らせるかどうかです。
SDKではwaitForATTUserAuthorization
というメソッドを提供しており、これを利用することで AppsFlyerサーバーにデータを送信する前に、どれくらいの時間、SDKがユーザーの同意を待つかを設定可能になります。
メソッドのデータフローとiOS ATTフレームワークとのやりとりについて詳しくは、「App Tracking Transparency (ATT) サポートの設定」のセクションを参照してください。
iOS開発者向けの実装手順
次の情報を開発者と共有してください。
- AppsFlyerにデータを送信するまでのタイムアウト(遅延)を何秒にするか
- 開発者向けドキュメント:
- iOS SDKの起動に関する開発者ガイドおよびリファレンスです。
- App Tracking Transparency (ATT) サポートを構成するの中で、メソッドのデータフローとiOS ATTフレームワークとのやりとりについての情報を参照してください。
- App Tracking Transparency (ATT) サポートを有効にする開発者ガイドとリファレンス
UnityでのSDK起動
SDKの起動方法については、こちらのDev Hubの記事を開発者に共有してください。
React NativeでのSDK起動
SDKの起動方法については、こちらのDev Hubの記事を開発者に共有してください。
プライバシー保護戦略の選択について
ユーザーのプライバシーを保護する方法を選択してください。例えば、SDKをインストール時に停止するか、第三者とのデータ共有を防止するか、ユーザーデータを匿名化するか、または特定の識別子を無効にするかなどを検討・選択する必要があります。
利用可能なさまざまなプライバシー保護方法の詳細については、 SDKのプライバシー保護方法をご覧ください。
アトリビューション計測について
SDKは、アトリビューション目的で識別子を収集します。 インストールが正しく記録され、アトリビューションされるようにするため、これらのガイドラインを確認して従ってください。
すべてのプラットフォーム向け:
インストールのための一意の識別子
新しいアプリインストールごとに、AppsFlyer IDが自動的に作成されます。マーケティング担当者による追加の作業などは必要ありません。
このAppsFlyer IDを利用することで、以下のようなことが実現可能です:
- Server-to-Serverでのアプリ内イベントの送信
- AppsFlyer IDと自社システムのユーザーデータの照合
- ローデータのアプリ内イベントレポートによる、appsflyer_id単位でのユーザージャーニーのやアプリ内行動の分析
Android向け:
以下のセクションでは、Google Playストアまたはサードパーティのアプリストアの計測における考慮事項について説明しています。
Google Playで公開されているアプリの計測について
[重要]Google Playインストールリファラー
Google Play Install Referrer APIは、アトリビューションの精度を向上させ、不正インストールを防ぎ、Google Playからのリファラデータ(アプリが最初にインストールされた時点のバージョン情報など)を安全に取得できるようになります。
開発者にGoogle Play Install Referrer APIを追加するための手順を共有し、実装することをお勧めします。
GAID
SDK V4.8.0以降であれば、AppsFlyerはこの識別子を自動的に収集します。
サードパーティストアのアプリ計測について
AppsFlyerを使用することで、Amazon、Opera、GetJar、Baidu、Huaweiなどのサードパーティアプリストアからのインストールを計測できるようになります。 これにより、Google Playストアが利用できないマーケットでも、アプリ広告を配信し、より多くのオーディエンスにリーチできるようになります。
AppsFlyerでは、サードパーティアプリストアでの計測について。以下のようにサポートしています:
-
IMEI、またはAndroid ID: AppsFlyer SDK では IMEI または Android ID を自動的には収集しません。ただし、これらの識別子が必要な場合には(例:中国国内市場のアプリなど)、開発者は以下の収集方法を実装できます。
- 手動での収集: アプリは、IMEI または Android ID を
setImeiData
またはsetAndroidIdData
API を使用してSDKに渡します(詳細は下のタブの関数リファレンスを参照)。その後、SDK はデータを AppsFlyer サーバーに送信します。Android SDK リファレンスをご覧ください。
Unity SDK リファレンスをご覧ください。
- デバイスID収集のオプトイン:setCollectIMEI と setCollectAndroidID を使用して、SDK が IMEI または Android ID を収集するよう強制します(詳細は下のタブの関数リファレンスを参照)。
Android SDKリファレンスをご覧ください:
Unity SDKリファレンスをご覧ください:
React Native リファレンスをご覧ください。
- 手動での収集: アプリは、IMEI または Android ID を
- OAI: サードパーティ Android アプリストアからのインストールをアトリビューションします。詳細は OAID の実装ガイドを参照してください。
- インストールリファラー: SDKはSamsung GalleryとHuawei AppGalleryからのリファラーデータの取得をサポートしています。
iOS向け:
以下のセクションでは、iOS 14 以降の計測における重要なポイントについて記載しています。
[重要]App Tracking Transparency (ATT) のサポート設定
背景
iOS 14.5 以降では、IDFA の収集にはユーザーの同意が必要です。具体的には、IDFA のアクセスは App Tracking Transparency (ATT)のフレームワークによって管理されます。iOS 14以降の端末では、AppsFlyer SDKはATTフレームワークを使用してIDFAにアクセスします。ATT の概要は、ATT の原則を参照してください。
ATT を実装する開発者向けガイドラインはDev Hubを参照してください。
ATT を実装する開発者向けガイドラインはDev Hubを参照してください。
SRN媒体をはじめ、IDFA を用いて計測を行うには、初回起動時に IDFA を送信することが非常に重要です。 それを実現するために、AppsFlyerでは waitForATTUserAuthorization
というメソッドを提供しています。
[重要]waitForATTUserAuthorization について
注意:
アプリ内でATTプロンプトを表示しない場合には、waitForATTUserAuthorization
を呼び出さないでください。
waitForATTUserAuthorization
を利用することで、AppsFlyerサーバーにデータを送信する前に、SDKがATTへの回答ステータスをどれくらいの時間待機して、計測を保留するかを設定できます。初回起動時にIDFAを正確に取得する上で、非常に重要な設定になるので必ず詳細を確認の上、実装してください
ユーザーがアプリを初回起動したタイミングでは、ATTステータスは未決定となります。 そして、waitForATTUserAuthorization
で設定した待機時間の間、SDKはオフラインイベントが記録される方法と同じ様に、起動イベントとその後のアプリ内イベントをメモリ内のキューに入れて待機させます:
- 設定した待機時間内に、ユーザーがATTプロンプト(IDFA取得)に同意した場合:
- SDK側でそれまでキャッシュされていたイベントにもIDFAを追加します。
- SDKが起動し、IDFAを付与した状態でキャッシュされたイベントを送信します。
- 設定した待機時間内に、ユーザーがATTプロンプト(IDFA取得)を拒否した場合:SDKが起動し、IDFAなしの状態でキャッシュされたイベントを送信します。
- 設定した待機時間が終了し、ATTステータスが 未決定 のままである場合: SDKがIDFAなしの状態でキャッシュされたイベントを送信します。
考慮事項
-
requestTrackingAuthorizationを設定せずに
waitForATTUserAuthorization
を呼び出してしまうと、iOS 14以降の端末では起動とアプリ内イベントがIDFAが欠損した状態で送信されてしまうのでご注意ください。 - 設定した待機時間中に、ユーザーがアプリをバックグラウンドに移動させた場合:
- アプリがフォアグラウンドに戻るまでタイマーは一時停止します。
- イベントはメモリ内にキャッシュされます。
- 設定した待機時間中に、ユーザーがアプリをシャットダウンすると強制終了されます。
- 次回のアプリ起動時に、タイマーが再開されます。
- キャッシュされたイベントは失われます。
ATT同意ダイアログのカスタマイズ
ATTの同意プロンプトは一部カスタマイズが可能です。同意取得の目的を的確に表現したメッセージは、ユーザーのオプトイン率を向上させるのに役立ちます。
メッセージを作成する際には、次の点を考慮してください。
- アプリがユーザーに同意を求める理由を、明確に説明する言葉を使いましょう。
- 取得したデータがどのように利用されるかをユーザーに知らせましょう。 ユーザーのプライバシーとデータ使用についての詳細はこちら。
メッセージが完成したら、開発者にテキストと実装手順を提供してください。
Dev HubでATT同意ダイアログをカスタマイズするための開発者向け手順を参照してください。
Dev HubでATT同意ダイアログをカスタマイズするための開発者向け手順を参照してください。
SKAN計測のサポートについて
注意
SKAN計測を完全にサポートするために、iOS SDKはV6.2.3以上にアップグレードしてください。
SKANは、iOSで広告主主導のアプリインストールを検証するために利用されるクラスです。アプリインストール検証プロセスには、ソースアプリと広告されるアプリが関与します。
ソースアプリとは、アドネットワークの広告を表示することで広告キャンペーンに参加するアプリのことです。広告を表示するようにアプリを設定することは、AppsFlyer SDKの範囲外です。設定するには、Appleの指示に従ってください。
広告されるアプリ(AppsFlyer SDKを搭載したアプリ)については、AppsFlyerのSKANソリューションがSKANを使用してアトリビューションポストバックを提供し、ユーザーのプライバシーを保護しながらデータを収集、変換、および集約します。アプリが初めて起動されると、AppsFlyerプラットフォームはマーケターが設定した内容に基づいて、SDKにSKANコンバージョン値を設定する方法を指示します。
SKANソリューションを使用するには:
- マーケターは、AppsFlyerでSKAN計測を設定する必要があります。 開発者は特に作業を行う必要はありません。
- AppsFlyer SDKは必要なSKAN APIを自動的に呼び出します。
- SKAN計測をAppsFlyerの機能に依存して行う場合は、他のSDKでのSKAN呼び出しを無効にしてください。
- App Storeでは、開発者やマーケターが取るべき追加の手続きや登録プロセスは必要ありません。
SKANアトリビューションを無効にするには、開発者にSDKで無効化するよう指示してください。
SKANアトリビューションを無効にするにはdisableSKAdNetwork
を利用します
SKANアトリビューションを無効にするにはdisableSKAdNetwork
を利用します
SKANアトリビューションを無効にするにはdisableSKAd
を利用します
アプリ内イベントの計測
アプリ内イベント(IAE)は、アプリ内で何が起きているのかを理解するのに役立ちます。アプリ内イベントの計測を行うことで、投資回収率(ROI)や顧客生涯価値(LTV)といったKPIを計測するのに役立ちます。何のイベントをAppsFlyerで計測するかを、時間をかけて定義することをお勧めします。
計測したいアプリ内イベントを決定したら、イベント名とパラメーターと、実装手順のリンクをを開発者に共有してください。
- SDKのインストールウィザードには、アプリ内イベント専用のプロセスがあります。
- SDKのアプリ内イベントの実装手順
アプリ内イベントを定義して開発者に送信する方法については、リッチアプリ内イベントガイドをご覧ください。
すべてのプラットフォーム向け:
収益の計測
あらゆるアプリ内イベントで収益を計測・送信できます。収益をアプリ内イベントの情報に含めるには、必ず af_revenue のパラメーターを使用してください。これは、AppsFlyerが管理画面とローデータレポート上で実際の収益としてカウントする唯一のイベントパラメーターです。 詳細はこちら。
アプリ内購入の検証
AppsFlyer SDK は、アプリ内購入についてサーバーによる検証を提供します。アプリ内購入が検証されると、購入イベントがAppsFlyerに自動的に送信されます。このイベントを自分で送信すると、重複レポートが発生します。
業界別
旅行、ゲーム、Eコマースなどの業界別推奨アプリ内イベントのリストをご覧ください。
OneLinkによるディープリンク
OneLinkは、マルチプラットフォーム アトリビューションのためのAppsFlyerソリューションであり、リダイレクトとディープリンクを実現します。
すべてのプラットフォーム
デバイスの検出とリダイレクト
アプリをインストールしていないユーザーの場合、OneLinkはデバイスの種類を検出し、適切な宛先(例えば、Google Play、Appleアプリストア、サードパーティのアプリストア、またはウェブページ)にリダイレクトします。これは、OneLinkテンプレートの設定に基づいています。 詳細はこちら
ディープリンク
アプリをインストールしているユーザーの場合、OneLinkによってアプリが起動されます。アプリを起動するだけでなく、アプリ内の特定画面やページにユーザーをディープリンクすることも可能です。これには、開発者がUnified Deep Linking (UDL)を実装する必要があります。
- SDKのインストールウィザードには、ディープリンク実装のための専用のプロセスがあります。
- UDL(Unified Deeplinking API)のSDK実装手順
注:
- UDLにはSDK V6.1以降が必要です。
- ディープリンクですでにOneLinkを使用しているカスタマーは、UDLではなく従来の方法を使用している可能性があります。
ディープリンクとディファードディープリンクの設定に関するガイドをご覧ください。
ディファードディープリンク
アプリをインストールしていないユーザーの場合、OneLinkはデバイスの種類を検出し、適切な宛先にリダイレクトします:Google Play、Appleアプリストア、サードパーティのアプリストア、またはウェブページ。ユーザーがアプリを起動すると、ディファードディープリンクを利用して、特定のアクティビティまたはページにリダイレクトできます。
これには、開発者が拡張ディファードディープリンクを実装する必要があります。
- SDKのインストールウィザードには、ディープリンク実装のための専用のプロセスがあります。
- ディファードディープリンクのためのSDK実装手順
注:
- UDLにはSDK V6.1以降が必要です。
- ディファードディープリンクにすでにOneLinkを使用しているカスタマーは、UDLではなく従来の方法を使用している可能性があります。
ディープリンクとディファードディープリンクの設定に関するガイドをご覧ください。
アトリビューションとディープリンクデータへのアクセス
以下の表は、アトリビューションおよびディープリンクデータを取得するために利用できる方法を示しています。
方法 | 関与する人は誰ですか? | 結果の取得 | 取得方法 | アトリビューションデータ | ディープリンクデータ | 可用性 |
---|---|---|---|---|---|---|
Push API | • マーケター • バックエンド開発者 | 通常数分以内で取得可能 | バックエンド | はい | いいえ | プレミアム |
Pull API | • マーケター • バックエンド開発者 | • 定期的(リアルタイムではありません)。• ローデータレポートのダウンロードをスケジュールできます。 | バックエンド | はい | はい | ローデータレポートのプレミアム |
Data Locker | • マーケター • バックエンド開発者 | 時間ごとのレポートは1~3時間以内に利用可能 | 次のいずれかのオプションによるクラウドストレージ: • AWS上のAppsFlyer所有のバケット • お客様所有のストレージ(AWSまたはGCS) | はい | はい | プレミアム |
コンバージョンデータ(GCD)を取得 | • マーケティング担当者 • モバイル開発者 開発者向けドキュメントを参照 | 最大5秒 | SDK | はい | はい | すべてのアカウント |
統合ディープリンク(UDL) | • マーケティング担当者 • モバイル開発者 開発者向けドキュメントを参照 | 最大1秒 | SDK | いいえ | はい | すべてのアカウント |
iOS 14.5以降の同意しないユーザーについては次の点に注意してください。
- 有料のメディアやオウンドメディアにUDLを利用する場合、ディープリンクデータが利用可能です。
- 有料のメディアにGCDを利用する場合、データは制限され、アトリビューションやディープリンク詳細は含まれません。
ヒント
以下をお勧めします:
- Push APIを利用してアトリビューションデータを取得し、サーバーに送信してさらに処理します。この方法ではデータが利用可能になるまで待機するため、精度が高くほぼ実際の時間です。GCDはデータを実際の時間で返しますが、最終アトリビューションの決定が5秒以上経過後に行われると不正確な場合があります。
- Pull APIを利用して、定期的に(例:毎日)実際の時間のアトリビューションデータを補足し、発生する可能性のある通信エラーを補正します。
SDK連携テスト
SDK連携が完了したら、AppsFlyer管理画面に移動し、SDK連携テストページからオーガニックインストールと非オーガニックインストール、アプリ内イベント、ディープリンク(リターゲティング)をテストできます。 これにより、インストールとアプリ内イベントが正しく記録され、アトリビューションされます。
テストのシナリオと手順については、SDK連携テストを参照してください。
注意: アトリビューションテストを行う際は、テストデバイスを登録(AndroidまたはiOS)し、各インストールが新しいインストールとして記録されることを確認します。登録済みのテストデバイスでは、インストールが再インストールとして記録されることはありません。