概要:モバイルアプリまたはCTVアプリ開発者と協力して、 SDK を Android または iOS アプリに統合およびインストールします。基本的な連携タスクが完了すると、アプリはインストールアトリビューションとアプリ内イベントの計測の準備が整います。
アプリに開発キーを実装する
AppsFlyerは開発キーを使用してアカウントを一意に識別します。開発キーは、SDKがアカウントに属するデータを安全に送受信するために必須です。開発者はSDKをインストールして連携し、開発キーを埋め込む必要があります。
開発キーを取得する
開発者がSDKをインストールして連携する前に、開発キーを取得する必要があります。
- AppsFlyer管理画面左メニュー 設定 > アプリ設定を選択します。
- 開発キーをコピーし、モバイル開発者に渡します。
開発者に開発キーを提供する
Dev Key、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を開始することが保証されます。 -
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が自動的に作成されます。マーケティング担当者によるアクションは必要ありません。
この識別子を利用して、次のアクションを実行できます。
- 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: SDK は IMEI または Android ID を自動的に収集しません。ただし、これらの識別子が必要な場合(例:中国国内市場のアプリ)開発者は、以下の収集方法を実装できます。
- 手動での収集: アプリは、IMEI または Android ID を
setImeiDataまたはsetAndroidIdDataAPI を使用してSDKに渡します(詳細は下のタブの関数リファレンスを参照)。その後、SDK はデータを AppsFlyer サーバーに送信します。 - デバイスID収集のオプトイン:setCollectIMEI と setCollectAndroidID を使用して、SDK が IMEI または Android ID を収集するよう強制します(詳細は下のタブの関数リファレンスを参照)。
- 手動での収集: アプリは、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以降のデバイスにおいては、SDKはATTフレームワークを使用してデバイスのIDFAにアクセスします。ATT の概要は、ATT の原則を参照してください。
ATT を実装する開発者向けガイドラインはDev Hubを参照してください。
ATT を実装する開発者向けガイドラインはDev Hubを参照してください。
IDFA を用いてアトリビューションを行うには、初回起動時に IDFA を送信することが重要です。 このため、SDKで メソッド waitForATTUserAuthorization を提供しています。
waitForATTUserAuthorization の概要
重要:
ATTプロンプトを表示しない場合は、waitForATTUserAuthorization を呼び出さないでください。
waitForATTUserAuthorization を利用することで、AppsFlyerサーバーにデータを送信する前に、SDKがATTステータスをどれくらいの期間保留し待機するかを設定できます。
ユーザーがアプリを起動すると、ATTステータスは未決定となります。 waitForATTUserAuthorization タイムアウトの間、SDKは、オフラインイベントが記録される方法と同様に、起動イベントと連続するアプリ内イベントをメモリ内でキューに入れます:
- ユーザーがATTプロンプト(IDFA収集)に同意した場合:
- SDKがキャッシュされたイベントにIDFAを追加します。
- SDKが起動し、IDFA付きでキャッシュされたイベントを送信します(タイムアウトを待たずに)。
- ユーザーがATTプロンプトを拒否した場合:SDKが起動し、IDFAなしでキャッシュされたイベントを送信します(タイムアウトを待たずに)。
- タイムアウトが終了し、ATTステータスが notDetermined のままである場合: SDKがIDFAなしでキャッシュされたイベントを送信します。
考慮事項
- を設定せずにを呼び出すと、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を測定するのに役立ちます。何を記録するかを時間をかけて定義することをお勧めします。
計測したいアプリ内イベントを決定したら、イベント名とパラメーターと、実装手順のリンクをを開発者に送ります。
- 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)し、各インストールが新しいインストールとして記録されることを確認します。登録済みのテストデバイスでは、インストールが再インストールとして記録されることはありません。
こちらも参照