概要:モバイルアプリまたは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 native
AndroidネイティブでのSDK起動
SDKを起動するクラスの選択
SDKをグローバルApplicationクラスで起動するか、Activityクラスで起動するかを選択してください。
-
グローバル
ApplicationクラスでのSDK起動: 一般的に、グローバルApplicationクラス/サブクラスでSDKを初期化することは良い方法です。 これは、ApplicationクラスがアプリのUIが表示される前に読み込まれて初期化されるためです。 This ensures that the SDK can start in any scenario, including deep linking. -
ActivityクラスでのSDK起動(遅延起動):ユーザーがデータ共有についてオプトインを選択できるようにする際には、こちらの選択肢になります。これは、ユーザーの同意を得るためには、ActivityクラスでUIを表示する必要があるためです。
Android開発者向けの実装手順
- 以下の決定について開発者に知らせてください。
- SDKを起動するクラスは
ApplicationかActivityか - どのオプトイン / オプトアウトシナリオを利用するか
- SDKを起動するクラスは
- 開発者に次の参照リンクを送信してください。
iOS native
iOSネイティブでのSDK起動
iOSでSDKの起動を遅延させる方法について
SDKの起動方法を計画する際の重要なポイントは、エンドユーザーによる同意が得られるまで、startを遅らせるかどうかです。
SDKではwaitForATTUserAuthorizationというメソッドを提供しており、これを利用することで AppsFlyerサーバーにデータを送信する前に、どれくらいの時間、SDKがユーザーの同意を待つかを設定可能になります。
メソッドのデータフローとiOS ATTフレームワークとのやりとりについて詳しくは、「App Tracking Transparency (ATT) サポートの設定」のセクションを参照してください。
iOS開発者向けの実装手順
次の情報を開発者と共有してください。
- AppsFlyerにデータを送信するまでのタイムアウト(遅延)を何秒にするか
- Developer Links:
- iOS SDKの起動に関する開発者ガイドおよびリファレンスです。
- App Tracking Transparency (ATT) サポートを有効にする開発者ガイドとリファレンス
- iOS ネイティブUnity
Unity
UnityでのSDK起動
SDKの起動方法については、こちらのDev Hubの記事を開発者に共有してください。
アトリビューション計測について
React NativeでのSDK起動
SDKの起動方法については、こちらのDev Hubの記事を開発者に共有してください。
プライバシー保護戦略の選択について
ユーザーのプライバシーを保護する方法を選択してください。例えば、SDKをインストール時に停止するか、第三者とのデータ共有を防止するか、ユーザーデータを匿名化するか、または特定の識別子を無効にするかなどを検討・選択する必要があります。
利用可能なさまざまなプライバシー保護方法の詳細については、 SDKのプライバシー保護方法をご覧ください。
Attribution
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はこの識別子を自動的に収集します。
Attribute apps in third-party app stores
AppsFlyerを使用することで、Amazon、Opera、GetJar、Baidu、Huaweiなどのサードパーティアプリストアからのインストールを計測できるようになります。 これにより、Google Playストアが利用できないマーケットでも、アプリ広告を配信し、より多くのオーディエンスにリーチできるようになります。
AppsFlyer supports attribution in the context of third-party app stores as follows:
-
IMEI、またはAndroid ID: AppsFlyer SDK では IMEI または Android ID を自動的には収集しません。ただし、これらの識別子が必要な場合には(例:中国国内市場のアプリなど)、開発者は以下の収集方法を実装できます。
-
手動での収集: アプリは、IMEI または Android ID を
setImeiDataまたはsetAndroidIdDataAPI を使用してSDKに渡します(詳細は下のタブの関数リファレンスを参照)。その後、SDK はデータを AppsFlyer サーバーに送信します。Android native
Android SDKリファレンスをご覧ください:
setImeiData- Androidネイティブ iOSネイティブ Unity React Native
Unity
Unity SDKリファレンスをご覧ください:
-
デバイスID収集のオプトイン:setCollectIMEI と setCollectAndroidID を使用して、SDK が IMEI または Android ID を収集するよう強制します(詳細は下のタブの関数リファレンスを参照)。
Android native
Android SDK リファレンスをご覧ください。
Unity
Unity SDK リファレンスをご覧ください。
Android ネイティブUnityReact Native
React Native リファレンスをご覧ください。
-
- OAI: サードパーティ Android アプリストアからのインストールをアトリビューションします。詳細は OAID の実装ガイドを参照してください。
- インストールリファラー: SDKはSamsung GalleryとHuawei AppGalleryからのリファラーデータの取得をサポートしています。
iOS向け:
The following sections include important information about support for iOS 14+ devices.
[重要]App Tracking Transparency (ATT) のサポート設定
背景
iOS 14.5 以降では、IDFA の収集にはユーザーの同意が必要です。具体的には、IDFA のアクセスは App Tracking Transparency (ATT)のフレームワークによって管理されます。 iOS 14以降の端末では、AppsFlyer SDKはATTフレームワークを使用してIDFAにアクセスします。 ATT の概要は、ATT の原則を参照してください。
iOS native
ATT を実装する開発者向けガイドラインはDev Hubを参照してください。
Unity
ATT を実装する開発者向けガイドラインはDev Hubを参照してください。
SRN媒体をはじめ、IDFA を用いて計測を行うには、初回起動時に IDFA を送信することが非常に重要です。 それを実現するために、AppsFlyerでは waitForATTUserAuthorization というメソッドを提供しています。
[重要]waitForATTUserAuthorization について
アプリ内でATTプロンプトを表示しない場合には、waitForATTUserAuthorization を呼び出さないでください。
ディープリンクデータ
ユーザーがアプリを初回起動したタイミングでは、ATTステータスは未決定となります。 そして、waitForATTUserAuthorization で設定した待機時間の間、SDKはオフラインイベントが記録される方法と同じ様に、起動イベントとその後のアプリ内イベントをメモリ内のキューに入れて待機させます:
- 設定した待機時間内に、ユーザーがATTプロンプト(IDFA取得)に同意した場合:
- SDK側でそれまでキャッシュされていたイベントにもIDFAを追加します。
- SDKが起動し、IDFAを付与した状態でキャッシュされたイベントを送信します。
- 設定した待機時間内に、ユーザーがATTプロンプト(IDFA取得)を拒否した場合:SDKが起動し、IDFAなしの状態でキャッシュされたイベントを送信します。
- 設定した待機時間が終了し、ATTステータスが 未決定 のままである場合: SDKがIDFAなしの状態でキャッシュされたイベントを送信します。
考慮事項
-
requestTrackingAuthorizationを設定せずに
waitForATTUserAuthorizationを呼び出してしまうと、iOS 14以降の端末では起動とアプリ内イベントがIDFAが欠損した状態で送信されてしまうのでご注意ください。 - 設定した待機時間中に、ユーザーがアプリをバックグラウンドに移動させた場合:
- アプリがフォアグラウンドに戻るまでタイマーは一時停止します。
- イベントはメモリ内にキャッシュされます。
- 設定した待機時間中に、ユーザーがアプリをシャットダウンすると強制終了されます。
- 次回のアプリ起動時に、タイマーが再開されます。
- キャッシュされたイベントは失われます。
ATT同意ダイアログのカスタマイズ
ATTの同意プロンプトは一部カスタマイズが可能です。同意取得の目的を的確に表現したメッセージは、ユーザーのオプトイン率を向上させるのに役立ちます。
メッセージを作成する際には、次の点を考慮してください。
- アプリがユーザーに同意を求める理由を、明確に説明する言葉を使いましょう。
- 取得したデータがどのように利用されるかをユーザーに知らせましょう。 ユーザーのプライバシーとデータ使用についての詳細はこちら。
メッセージが完成したら、開発者にテキストと実装手順を提供してください。
iOS native
Dev HubでATT同意ダイアログをカスタマイズするための開発者向け手順を参照してください。
Unity
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で無効化するよう指示してください。
iOS native
SKANアトリビューションを無効にするにはdisableSKAdNetworkを利用します
Unity
SKANアトリビューションを無効にするにはdisableSKAdNetworkを利用します
iOSネイティブUnityReact Native
SKANアトリビューションを無効にするにはdisableSKAdを利用します
アプリ内イベントの計測
アプリ内イベント(IAE)は、アプリ内で何が起きているのかを理解するのに役立ちます。アプリ内イベントの計測を行うことで、投資回収率(ROI)や顧客生涯価値(LTV)といったKPIを計測するのに役立ちます。何のイベントをAppsFlyerで計測するかを、時間をかけて定義することをお勧めします。
計測したいアプリ内イベントを決定したら、イベント名とパラメーターと、実装手順のリンクをを開発者に共有してください。
- SDKのインストールウィザードには、アプリ内イベント専用のプロセスがあります。
- SDKのアプリ内イベントの実装手順
アプリ内イベントを定義して開発者に送信する方法については、リッチアプリ内イベントガイドをご覧ください。
すべてのプラットフォーム
収益の計測
あらゆるアプリ内イベントで収益を計測・送信できます。収益をアプリ内イベントの情報に含めるには、必ず af_revenue のパラメーターを使用してください。これは、AppsFlyerが管理画面とローデータレポート上で実際の収益としてカウントする唯一のイベントパラメーターです。 詳細はこちら。
アプリ内購入の検証
AppsFlyer SDK は、アプリ内購入についてサーバーによる検証を提供します。アプリ内購入が検証されると、購入イベントがAppsFlyerに自動的に送信されます。このイベントを自分で送信すると、重複レポートが発生します。
業界別
旅行、ゲーム、Eコマースなどの業界別推奨アプリ内イベントのリストをご覧ください。
OneLinkによるディープリンク
OneLinkは、マルチプラットフォーム アトリビューションのためのAppsFlyerソリューションであり、リダイレクトとディープリンクを実現します。
すべてのプラットフォーム向け:
デバイスの検出とリダイレクト
アプリをインストールしていないユーザーの場合、OneLinkはデバイスの種類を検出し、適切な宛先(例えば、Google Play、Appleアプリストア、サードパーティのアプリストア、またはウェブページ)にリダイレクトします。これは、OneLinkテンプレートの設定に基づいています。 詳細はこちら
Deep linking
アプリをインストールしているユーザーの場合、OneLinkによってアプリが起動されます。アプリを起動するだけでなく、アプリ内の特定画面やページにユーザーをディープリンクすることも可能です。これには、開発者がUnified Deep Linking (UDL)を実装する必要があります。
- SDKのインストールウィザードには、ディープリンク実装のための専用のプロセスがあります。
- https://dev.appsflyer.com/hc/docs/dl_work_flow#implement-unified-deep-linking-udl
注:
- UDLにはSDK V6.1以降が必要です。
- ディープリンクですでにOneLinkを使用しているカスタマーは、UDLではなく従来の方法を使用している可能性があります。
ディープリンクとディファードディープリンクの設定に関するガイドをご覧ください。
Deferred deep linking
アプリをインストールしていないユーザーの場合、OneLinkはデバイスの種類を検出し、適切な宛先にリダイレクトします:Google Play、Appleアプリストア、サードパーティのアプリストア、またはウェブページ。ユーザーがアプリを起動すると、ディファードディープリンクを利用して、特定のアクティビティまたはページにリダイレクトできます。
This requires your developer to implement deferred deep linking using:
- SDKのインストールウィザードには、ディープリンク実装のための専用のプロセスがあります。
- https://dev.appsflyer.com/hc/docs/dl_work_flow#recommended-implement-extended-deferred-deep-linking
注:
- UDLにはSDK V6.1以降が必要です。
- ディファードディープリンクにすでにOneLinkを使用しているカスタマーは、UDLではなく従来の方法を使用している可能性があります。
ディープリンクとディファードディープリンクの設定に関するガイドをご覧ください。
アトリビューションとディープリンクデータへのアクセス
以下の表は、アトリビューションおよびディープリンクデータを取得するために利用できる方法を示しています。
| 方法 | 関与する人は誰ですか? | 結果の取得 | 取得方法 | アトリビューションデータ | Deep linking data | 可用性 |
| Push API | • マーケター • バックエンド開発者 | 通常数分以内で取得可能 | バックエンド | Y | N | プレミアム |
| Pull API | • マーケター • バックエンド開発者 | • 定期的(リアルタイムではありません)。 • ローデータレポートのダウンロードをスケジュールできます。 | バックエンド | Y | Y | ローデータレポートのプレミアム |
| Data Locker | • マーケター • バックエンド開発者 | 時間ごとのレポートは1~3時間以内に利用可能 | 次のいずれかのオプションによるクラウドストレージ: • AWS上のAppsFlyer所有のバケット • お客様所有のストレージ(AWSまたはGCS) | Y | Y | プレミアム |
| コンバージョンデータ(GCD)を取得 | • マーケティング担当者 • モバイル開発者 開発者向けドキュメントを参照 | 最大5秒 | SDK | Y | Y | すべてのアカウント |
| 統合ディープリンク(UDL) | • マーケティング担当者 • モバイル開発者 開発者向けドキュメントを参照 | 最大1秒 | SDK | N | Y | すべてのアカウント |
iOS 14.5以降の同意しないユーザーについては次の点に注意してください。
- 有料のメディアやオウンドメディアにUDLを利用する場合、ディープリンクデータが利用可能です。
- 有料のメディアにGCDを利用する場合、データは制限され、アトリビューションやディープリンク詳細は含まれません。
以下をお勧めします:
- Push APIを利用してアトリビューションデータを取得し、サーバーに送信してさらに処理します。この方法ではデータが利用可能になるまで待機するため、精度が高くほぼ実際の時間です。 GCDはデータを実際の時間で返しますが、最終アトリビューションの決定が5秒以上経過後に行われると不正確な場合があります。
- Pull APIを利用して、定期的に(例:毎日)実際の時間のアトリビューションデータを補足し、発生する可能性のある通信エラーを補正します。
SDK連携テスト
SDK連携が完了したら、AppsFlyer管理画面に移動し、SDK連携テストページからオーガニックインストールと非オーガニックインストール、アプリ内イベント、ディープリンク(リターゲティング)をテストできます。 これにより、インストールとアプリ内イベントが正しく記録され、アトリビューションされます。
テストのシナリオと手順については、SDK連携テストを参照してください。
注意: アトリビューションテストを行う際は、テストデバイスを登録(AndroidまたはiOS)し、各インストールが新しいインストールとして記録されることを確認します。登録済みのテストデバイスでは、インストールが再インストールとして記録されることはありません。
こちらも参照
- CTV、PC、コンソールプラットフォームの概要