概要:モバイルアプリまたはCTVアプリ開発者と協力して、 SDK を Android または iOS アプリに統合およびインストールします。基本的な連携タスクが完了すると、アプリはインストールアトリビューションとアプリ内イベントの計測の準備が整います。
アプリに開発キーを実装する
AppsFlyerは開発キーを使用してアカウントを一意に識別します。開発キーは、SDKがアカウントに属するデータを安全に送受信するために必須です。開発者はSDKをインストールして連携し、開発キーを埋め込む必要があります。
開発キーを取得する
開発者がSDKをインストールして連携する前に、開発キーを取得する必要があります。
開発キーを埋め込む
モバイル開発者に、SDKをインストールして連携する手順を提供します。
SDKはどこから開始すればよいですか?
AppsFlyer SDKの連携を計画する際には、まずアプリケーション起動フロー内のどこでSDKを初期化し、起動するかを決定する必要があります。
基本的な指針としては、アプリケーション起動後できるだけ早くSDKにデータを送信させることです。これにより、SDKはインストールイベントやセッション内で発生するすべてのアプリ内イベントをキャプチャできます。
ただし、GDPRやCCPAなどのプライバシー保護規制に準拠するには、ユーザーの情報共有の同意を得るまでAppsFlyerへのデータ送信を遅らせる必要がしばしばあります。
AndroidネイティブでSDKを起動する
SDKを起動するクラスを選択する
SDKをグローバルApplication
クラスで起動するか、Activity
クラスで起動するかを選択します。
-
グローバル クラスで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
またはsetAndroidIdData
API を使用して SDK に渡します(詳細は下のタブの関数リファレンスを参照)。その後、SDK はデータを AppsFlyer サーバーに送信します。Unity SDK リファレンスをご覧ください。
- デバイスID 収集のオプトイン:setCollectIMEI と setCollectAndroidID を使用して、SDK が IMEI または Android ID を収集するよう強制します(詳細は下のタブの関数リファレンスを参照)。
Android SDK リファレンスをご覧ください。
Unity SDK リファレンスをご覧ください。
React Native リファレンスをご覧ください。
- 手動収集: アプリは、IMEI または Android ID を
- OAID: サードパーティ 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 を送信することが重要です。 waitForATTUserAuthorization
このために、SDK はメソッドを提供waitForATTUserAuthorization
します。
waitForATTUserAuthorization の概要
重要!
ATT プロンプトを呼び出すつもりがないなら、waitForATTUserAuthorization
を呼び出さないでください。
waitForATTUserAuthorization
を利用することで、AppsFlyerサーバーにデータを送信する前に、SDKがATTステータスをどれくらいの期間保留し待機するかを設定できます。
ユーザーがアプリを起動すると、ATTステータスは未決定となります。 タイムアウト中に、SDKは起動イベントとその後のアプリ内イベントをメモリ内にキューとして保持します。これは、オフラインイベントが記録される方法と似ています。
- ユーザーがATTプロンプト(IDFA収集)に同意した場合:
- SDKがキャッシュされたイベントにIDFAを追加します。
- SDKが起動し、IDFA付きでキャッシュされたイベントを送信します(タイムアウトを待たずに)。
- ユーザーがATTプロンプトを拒否した場合:SDKが起動し、IDFAなしでキャッシュされたイベントを送信します(タイムアウトを待たずに)。
- もしタイムアウトが終了し、ATTステータスが未決定のままである場合: 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アトリビューションを無効にするにはdisableSKAd
を使用します
アプリ内イベントの記録
アプリ内イベント(IAE)は、アプリ内で何が起きているのかを理解するのに役立ちます。アプリ内イベントの記録を行うことで、投資収益率(ROI)や顧客生涯価値(LTV)といったKPIを測定するのに役立ちます。何を記録するかを時間をかけて定義することをお勧めします。
測定したいアプリ内イベントを決定したら、イベント名とパラメーターを開発者に送り、実装手順へのリンクを含めてください。
アプリ内イベントの詳細については、リッチアプリ内イベントガイドをご覧ください。
すべてのプラットフォーム
収益の記録
あらゆるアプリ内イベントで収益を送信できます。収益を含めるには、必ず af_revenue パラメーターを使用してください。これは、AppsFlyerが管理画面とローデータレポートで実際の収益としてカウントする唯一のイベントパラメーターです。 詳細はこちら。
アプリ内購入の検証
AppsFlyer SDK は、アプリ内購入についてサーバーによる検証を提供します。アプリ内購入が検証されると、購入イベントがAppsFlyerに自動的に送信されます。このイベントを自分で送信すると、重複報告が発生します。
業界別
旅行、ゲーム、Eコマースなどの業界別推奨アプリ内イベントのリストをご覧ください。
OneLinkによるディープリンク
OneLinkは、マルチプラットフォーム アトリビューションのためのAppsFlyerソリューションであり、リダイレクトとディープリンクを実現します。
すべてのプラットフォーム
デバイスの検出とリダイレクト
アプリをインストールしていないユーザーの場合、OneLinkはデバイスの種類を検出し、適切な宛先(例えば、Google Play、Appleアプリストア、サードパーティのアプリストア、またはウェブページ)にリダイレクトします。これは、OneLinkテンプレートの設定に基づいています。 詳細はこちら
ディープリンク
アプリをインストールしているユーザーの場合、OneLinkによってアプリが起動されます。アプリを起動するだけでなく、特定のアクティビティやページにユーザーをディープリンクすることも可能です。これには、開発者がUnified Deep Linking (UDL)を実装する必要があります。
注:
- UDLにはSDK V6.1以降が必要です。
- ディープリンクですでにOneLinkを使用しているカスタマーは、UDLではなく従来の方法を使用している可能性があります。
ディープリンクとディファードディープリンクの設定に関するガイドをご覧ください。
ディファードディープリンク
アプリをインストールしていないユーザーの場合、OneLinkはデバイスの種類を検出し、適切な宛先にリダイレクトします:Google Play、Appleアプリストア、サードパーティのアプリストア、またはウェブページ。ユーザーがアプリを起動すると、ディファードディープリンクを利用して、特定のアクティビティまたはページにリダイレクトできます。
これには、開発者が拡張ディファードディープリンクを実装する必要があります。
注:
- UDLにはSDK V6.1以降が必要です。
- ディファードディープリンクにすでにOneLinkを使用しているカスタマーは、UDLではなく従来の方法を使用している可能性があります。
ディープリンクとディファードディープリンクの設定に関するガイドをご覧ください。
アトリビューションとディープリンクデータへのアクセス
以下の表は、アトリビューションおよびディープリンクデータを取得するために利用できる方法を示しています。
方法 | 関与する人は誰ですか? | 結果の取得 | 取得方法 | アトリビューションデータ | ディープリンクデータ | 可用性 |
---|---|---|---|---|---|---|
プッシュAPI | • マーケター • バックエンド開発者 | 通常数分以内で取得可能 | バックエンド | はい | いいえ | プレミアム |
プルAPI | • マーケター • バックエンド開発者 | • 定期的(リアルタイムではありません)。• 生データレポートのダウンロードをスケジュールできます。 | バックエンド | はい | はい | 生データレポートのプレミアム |
Data Locker | • マーケター • バックエンド開発者 | 時間ごとのレポートは1~3時間以内に利用可能 | 次のいずれかのオプションによるクラウドストレージ: • AWS上のAppsFlyer所有のバケット • お客様が所有するストレージ (AWSまたはGCS) | はい | はい | プレミアム |
コンバージョンデータ(GCD)を取得 | • マーケティング担当者 • モバイル開発者 開発者向けドキュメントを参照 | 最大5秒 | SDK | はい | はい | すべてのアカウント |
統合ディープリンク(UDL) | • マーケティング担当者 • モバイル開発者 開発者向けドキュメントを参照 | 最大1秒 | SDK | いいえ | はい | すべてのアカウント |
iOS 14.5以降の同意しないユーザーについては次の点に注意してください。
- 有料のメディアやオウンドメディアにUDLを利用する場合、ディープリンクデータが利用可能です。
- 有料のメディアにGCDを利用する場合、データは制限され、アトリビューションやディープリンク詳細は含まれません。
ヒント
以下をお勧めします。
- プッシュAPIを利用してアトリビューションデータを取得し、サーバーに送信してさらに処理します。この方法ではデータが利用可能になるまで待機するため、精度が高くほぼ実際の時間です。GCDはデータを実際の時間で返しますが、最終アトリビューションの決定が5秒以上経過後に行われると不正確な場合があります。
- プルAPIを利用して、定期的に(例: 毎日)実際の時間のアトリビューションデータを補足し、発生する可能性のある通信エラーを補正します。
SDK連携テスト
SDK連携が完了したら、AppsFlyer管理画面に移動し、SDK連携テストページからオーガニックインストールと非オーガニックインストール、アプリ内イベント、ディープリンク(リターゲティング)をテストできます。 これにより、インストールとアプリ内イベントが正しく記録され、アトリビューションされます。
テストのシナリオと手順については、SDK連携テストを参照してください。
注意: アトリビューションテストを行う際は、テストデバイスを登録(AndroidまたはiOS)し、各インストールが新しいインストールとして記録されることを確認します。登録済みのテストデバイスでは、インストールが再インストールとして記録されることはありません。