概要:モバイルまたはCTVアプリ開発者と連携し、SDKをインストールしAndroidまたはiOSアプリに実装してください。基本的な実装に関するタスクが完了したら、アプリはインストールとアプリ内インベントを計測する準備が整いました。
関連記事
アプリとSDK実装の計画についての全体像を把握するためには、以下の記事を参照してください。
- SDK実装の概要
- 基本的なSDK実装ガイド(本記事)
- 追加のSDK実装ガイド
- コネクテッドTV(CTV)とオーバーザトップ(OTT)の概要
Devキーの取得
ディベロッパーがSDKをインストールし実装する前に、Dev keyを取得する必要があります。AppsFlyerではdev keyを使用して個々のアカウントを一意に識別します。SDKがAppsFlyerアカウントに関するデータを安全に送受信できるようにするためには、dev keyは必要です。
Dev Keyの取得
- AppsFlyerの管理画面内で、 左メニュー 設定2 > アプリ設定へ移動してください。
- Dev keyをコピーし、モバイルディベロッパーへ共有してください。
- SDKをインストールし実装するためのガイドをモバイルディベロッパーへ共有してください。
どこから始めれば良いですか?
AppsFlyer SDKの実装を計画する場合、最初に決定する必要があるのは、アプリの起動フロー内でSDKを初期化して開始する場所です。
基本的な経験則は、アプリの起動後できるだけ早くSDKにデータの送信を開始させることです。これにより、SDK はインストールイベントと、セッション後に発生した他のすべてのアプリ内イベントをキャプチャします。
ただし、GDPRやCCPAなどのプライバシー規制に準拠するために、ユーザーが情報の共有に同意するまで、AppsFlyerへのデータ送信を遅らせる必要がある場合があります。
Android SDKの起動
SDKを起動するクラスを選択
SDKを global Application
クラスもしくはActivity
クラスで開始するかを選択します。
-
グローバル
Application
クラスで SDKを開始する: 一般的に、アプリのUIが表示される前にクラスが読み込まれて初期化されるため、グローバルApplication
クラス/サブクラスApplication
で SDK を初期化することをお勧めします。これにより、ディープリンクを含むあらゆるシナリオでSDKを起動できます。 -
Activity
クラスでSDKを起動し(遅延開始)、 ユーザーがデータ共有にオプトインできるようにします。これは、ユーザーの同意を得るには、Activity
classレンダリングされるユーザーインターフェイス (UI) が必要になるためです。
オプトアウト/インシナリオを選択
GDPRやCCPAなどの個人情報保護規制に準拠した方法でstart
をコールする方法をまとめたオプトアウトシナリオを選択する。例:インストール時のオプトアウトシナリオ、1 回限りのオプトアウトシナリオ、またはサードパーティとのデータ共有の防止シナリオのいずれかを選択します。
コードサンプルを含む利用可能なオプトアウトシナリオの詳細については、オプトインおよびオプトアウトシナリオを参照してください。
Android開発者向けの手順
- 次の決定事項を開発者に通知します:
- どのクラスで -
Application
またはActivity
- SDKを起動したいか
- どのオプトイン/オプトアウトシナリオを使用するか
- どのクラスで -
- 開発者に次の参照リンクを渡します:
iOS SDKの起動
iOSのSDK起動の遅延
SDKの起動方法を計画する際の重要な考慮事項:ユーザーの同意が得られるまで start
のコールを遅延するかどうか
SDKは、 waitForATTUserAuthorization
という、AppsFlyerサーバーにデータを送信する前に SDKがユーザーの同意を待機する時間を構成することができるメソッドが用意されています。
メソッドのデータフローと iOS ATTフレームワークとの相互作用の詳細については、ATT (App Tracking Transparency) サポートの対応 に関するセクションを参照してください。
オプトアウト/インシナリオを選択
GDPRやCCPAなどの個人情報保護規制に準拠した方法でstart
をコールする方法をまとめたオプトアウトシナリオを選択します。
例:インストール時のオプトアウトシナリオ、1回限りのオプトアウトシナリオ、またはサードパーティとのデータ共有の防止シナリオのいずれかを選択します。
使用可能なさまざまなオプトアウトシナリオの詳細については、オプトインとオプトアウトのシナリオを参照してください。
iOS 開発者向け手順
次の情報を開発者と共有します:
- AppsFlyerにデータを送信するまでのタイムアウト時間(秒単位)
- どのオプトイン/オプトアウトシナリオを使用するか
- 開発者向けリンク:
- 開発者向け iOS SDK 起動ガイドと SDK の起動方法に関するリファレンス
-
ATT (App Tracking Transparency) サポートを構成し、
waitForATTUserAuthorization
メソッドのデータフローと iOS ATT フレームワークとの相互作用に関する情報を提供します。
-
開発者向け ATT (App Tracking Transparency) サポートの有効化ガイドと
waitForATTUserAuthorization
のリファレンス
計測
SDKはアトリビューションの目的で識別子を取得します。インストールが記録され正しく成果が紐づけられるために、以下のガイドラインを確認し従ってください。
全てのプラットフォーム
インストールのユニーク識別子
AppsFlyer IDは全ての新規アプリインストールに対して自動的に作成されます。広告主側でアクションの必要はありません。
この識別子を使用して、以下のアクションを実行することができます。
- サーバー間(S2S)イベントを送信するとき
- AppsFlyer IDを広告主側で持っているシステム上のユーザー情報と一致させる
- アプリ内イベントのローデータレポートをダウンロードし、appsflyer_id を使ってユーザーの行動とジャーニーを分析する
自社BIシステムからのユニーク識別子をAppsFlyerと統合する
独自の顧客ユーザーID(CUID)をAppsFlyer SDKで設定することで、自社BIシステムのユニークIDをAppsFlyer IDや他の識別子と相互参照できるようになります。CUIDはAppsFlyerのローデータレポートで利用できます。また、ポストバックAPIでは、社内のIDとの相互参照に使用することができます。
CUIDの実装に関するディベロッパー向けガイドを参照してください。
Androidのみ
以下のセクションでは、Google Playストアやサードパーティのアプリストアでのアトリビューションに関する注意点を説明します。
Google Playで公開されているアプリの計測
Google Playインストールリファラー
Google PlayインストールリファラーAPI は、アトリビューションの精度を向上させ、インストールの不正から保護し、Google Play からのリファラデータ(例えばアプリが最初にインストールされたときのアプリバージョンなど)を安全に取得できます。
Google Playインストールリファラー APIを追加するガイドをディベロッパーに共有してください。
GAID
SDK V4.8.0以降、AppsFlyerは自動的にこのデバイス識別子を収集します。
サードパーティアプリストアの計測
AppsFlyerでは、Amazon、Opera、GetJar、Baidu、Huawei などのサードパーティからのインストールを計測することができます。これにより、Google Playを利用できないエリアでも多くのオーディエンスにリーチしてアプリを宣伝可能です。
AppsFlyerでは、サードパーティアプリストアの文脈において、以下のように計測をサポートしています:
-
IMEI または Android ID:SDKは、IMEI または Android IDを自動的に収集しません。ただし、これらのIDを収集する必要がある場合(例えば、中国国内市場のアプリなど)、ディベロッパーは以下の収集タイプのいずれかを実装することができます。
- 手動での収集:アプリはIMEIやAndroid IDをSDKに渡します(
setImeiData
またはsetAndroidIdData
APIを使用)。SDKはデータをAppsFlyerサーバーに送信します。 - デバイスIDの収集にオプトイン:SDKがIMEIまたはAndroid IDを強制的に収集します。
- 手動での収集:アプリはIMEIやAndroid IDをSDKに渡します(
- OAID:サードパーティAndroidアプリストアからインストールを計測します。詳しくは、OAID実装ガイドを参照してください。
- インストールリファラ:SDKはSamsung GalleryとHuawei AppGalleryからのリファラデータの取得に対応しています。
iOSのみ
以下のセクションには、iOS 14以上のデバイスのサポートに関する重要な情報が含まれています。
App Tracking Transparency (ATT) サポートの実装
背景
iOS 14.5以降、IDFAの収集にはアプリユーザーの同意が必要になります。実際には、IDFAへのアクセスはApp Tracking Transparency (ATT) のフレームワークによって管理されることを意味します。そのため、iOS14以降の端末においては、AppsFlyerのiOS SDKもATTのフレームワークを利用して端末のIDFAへのアクセスを得ることになります。
ATTの概要については、ATTの基本仕様を参照してください。
IDFAを利用した計測が発生する場合には、IDFAが初回起動(first launch)のイベントとともに送信されることが重要になります。このため、AppsFlyer SDKでは waitForATTUserAuthorization という機能を提供しています。
waitForATTUserAuthorization について
重要!
ATTの同意ダイアログを表示しない場合には、waitForATTUserAuthorization
を呼び出さないでください。
waitForATTUserAuthorization
を使用することで、ATTへの同意が完了するのを待って、AppsFlyerサーバーへデータ送信するのを延期する期間を設定することが可能です。
ユーザーがアプリを起動した時、ATTステータスは undetermined(未確定)の状態です。waitForATTUserAuthorization
がタイムアウト中は、SDKはオフライン時のイベント計測方法と同様の方式で、起動イベントとその後のアプリ内イベントをメモリ内に待機させます。
- ユーザーがATTプロンプト(IDFAの収集)に同意 した場合:
- SDKはメモリ内に待機させたイベントにもIDFAを追加します。
- SDKは計測を開始し、メモリ内に待機させたイベントにIDFAを添えて、タイムアウトが終了するのを待たずに送信します。
- ユーザーがATTダイアログを拒否した場合:SDKは計測を開始し、メモリ内に待機させたイベントにIDFAを添えず、またタイムアウトが終了するのを待たずに送信します。
- タイムアウトが終了しATTの同意も得られなかった場合(notDetermined /未確定):SDKは計測を開始し、メモリ内に待機させたイベントはIDFAの情報を追加せずに送信します。
注意事項
waitForATTUserAuthorization
を設定せずにrequestTrackingAuthorization
を呼び出してしまうと、iOS14以降の端末ではIDFAを取得せずに起動とその後のアプリ内イベントを送信してしまうので注意してください。- タイムアウト中にユーザーがアプリをバックグラウンドに移動した場合:
- ユーザーが再度アプリを表示させる(フォアグラウンドに戻す)まで、タイマーが一時停止されます。
- イベントはメモリ内にキャッシュされます。
- タイムアウト中にユーザーがアプリをシャットダウンまたは強制終了(=キル)した場合:
- タイマーは、次回のアプリの起動時に再開されます。
- キャッシュされたイベントは削除されます。
ATT同意ダイアログのカスタマイズ
ATTの同意ダイアログをカスタマイズすることができます。ATTのダイアログでその目的を明確に示したメッセージを届けることは、ユーザーのオプトイン率を高めるのに役立ちます。
メッセージを作成するときには、以下のポイントに注意してください:
- アプリがユーザーの同意を求めている理由を、ユーザーにもっとも分かりやすく説明しているテキスト/単語を使用しましょう。
- データがどのように利用されるのかについてユーザーに知らせましょう。詳細はユーザーのプライバシーとデータの利用を参照してください。
メッセージが完成したら、開発担当者にそのテキストと実装ガイドを共有してください。
SKANアトリビューションのサポート
注
SKAN計測を完全にサポートするには、iOS SDK V6.2.3以降にアップデートしてください。
SKANは iOS で使用されるクラスで、広告主アプリのインストールを検証します。アプリのインストール検証プロセスには、ソースアプリ(≒広告配信面のアプリ)と広告主アプリが関係します。
ソースアプリは、アドネットワークからの広告を表示することで広告キャンペーンに参加するアプリです。広告を表示できるようにアプリを設定することは、AppsFlyer SDKのサポート範囲ではありません。 設定する場合には、Appleのガイドに従ってください。
広告主アプリ (AppsFlyer SDKを実装しているアプリ) の場合、AppsFlyerの SKANソリューションはSKANを使用してアトリビューションのポストバックを提供し、AppsFlyerはユーザーのプライバシーを維持しながらデータを収集、翻訳、集計します。アプリを初回起動すると、AppsFlyerはマーケティング担当者が事前に設定した内容を使用して、SKANのコンバージョン値の設定方法をSDKに指示します。
SKANソリューションの使用方法:
- マーケティング担当者は、AppsFlyerの管理画面上でSKANの計測に関する設定を行う必要がありますが、開発担当者は何も追加作業を行う必要はありません。
- AppsFlyer SDK は自動的に必要なSKAN APIを呼び出します。
- SKANの計測をAppsFlyerで実行する場合、他のSDKではSKANに関する呼び出しを全て無効にしてください。
- AppStoreにおいて、開発者、マーケティング担当者のどちらも、この他に何も特別なアクションや登録プロセスは必要ありません。
SKANの計測を無効にするには、SDK内で無効にするように開発担当者へ依頼してください。
アプリ内イベントの計測
アプリ内イベント(IAE)により、アプリ内でのユーザーの動きに関するインサイトを得ることができます。アプリ内イベントを計測することで投資利益率(ROI)や生涯価値(LTV)などのKPIを計測できるようになります。そのため、時間を取って計測するイベントを定義することをオススメします。
計測したいアプリ内イベントが決まったら、そのイベント名とイベントパラメーターを実装ガイドのリンクと一緒にディベロッパーに共有してください。
アプリ内イベント計測の詳細については、リッチアプリ内イベントガイドを参照してください。
全てのプラットフォーム
収益の計測
アプリ内課金の検証
AppsFlyerのSDKでは、アプリ内購入をサーバーにて検証できます。アプリ内購入を検証するとアプリ内イベントが自動的にAppsFlyerに送信されます。このイベントを別途送信すると、重複してイベントをレポートすることになるので注意してください。
カテゴリー別の実装例
旅行、ゲーム、Eコマースなど、業種ごとに推奨されるアプリ内イベントのリストを参照してください。
OneLinkでディープリンク
OneLinkは、AppsFlyerが提供するマルチプラットフォーム向けの計測と リダイレクトとディープリンクのためのソリューションです。
全てのプラットフォーム
デバイスの検知とリダイレクト
まだアプリをインストールしていないユーザーの場合、OneLinkはそのユーザーの端末の種類を判別して正しい遷移先 (GooglePlay、AppleのAppStore、サードパーティのアプリストア、もしくはウェブページ) へリダイレクトさせます。この挙動は予め設定されたOneLinkテンプレートの内容に基づきます。詳細はこちら
ディープリンク
アプリを既にインストールしているユーザーの場合、OneLinkはアプリを起動します。また、アプリを開くだけでなく、アプリ内の特定のアクティビティやページへユーザーをディープリンクさせることも可能です。そのためには、開発者側でユニファイドディープリンク(UDL)を実装する必要があります。
注意:
- UDLの利用には、SDK V6.1以上の実装が必要です。
- なお、ディープリンクのためにOneLinkを既に使用しているお客様は、UDLではなく従来の方法を使用している可能性があります。
参照:ディープリンクとディファードディープリンクの設定に関するガイド
ディファードディープリンク
まだアプリをインストールしていないユーザーの場合、OneLinkはそのユーザーの端末の種類を判別し、GooglePlay、AppleのAppStore、サードパーティのアプリストア、もしくはウェブページへリダイレクトさせます。そのユーザーがアプリを初回起動した際に、ディファードディープリンクを使用して、アプリ内の特定のアクティビティやページにユーザーをリダイレクトさせることが可能です。
これには、開発者が 拡張ディファードディープリンクを実装する必要があります。
注意:
- UDLの利用には、SDK V6.1以上の実装が必要です。
- なお、ディファードディープリンクのためにOneLinkを既に使用しているお客様は、UDLではなく従来の方法を使用している可能性があります。
参照:ディープリンクとディファードディープリンクの設定に関するガイド
アトリビューションとディープリンクデータへのアクセス
以下の表では、アトリビューションデータとディープリンクデータの取得時に利用可能な手法について記載しています:
メソッド | 作業関係者 | 結果の送信 | 取得方法 | アトリビューションデータ | ディープリンクさせたパラメータの値 | 利用可能時間 |
---|---|---|---|---|---|---|
Push API |
|
通常数分以内 | バックエンド | Y | N | プレミアム機能 |
Pull API |
|
|
バックエンド | Y | Y | ローデータレポートはプレミアム機能 |
Data Locker |
|
時間別レポートは1〜3時間以内に取得可能になります。 |
以下のいずれかのクラウドストレージから取得します:
|
Y | Y | プレミアム機能 |
コンバージョンデータの取得(GCD) |
|
最長5秒 | SDK | Y | Y | 全てのアカウント |
ユニファイド ディープリンク(UDL) |
|
最長1秒 | SDK | N | Y | 全てのアカウント |
iOS14.5以降のオプトアウト(非同意)ユーザーについては、以下の点に注意してください:
- ペイドメディアもしくはオウンドメディア向けにUDLを使用する場合、ディープリンクデータは利用可能です。
- 一方、ペイドメディア向けにGCD(従来の方式)を使用する場合、データが制限されアトリビューションデータやディープリンクに関する詳細は含まれなくなります。
ヒント
AppsFlyerでは以下を推奨しています:
- Push APIを使用して、計測データを取得してさらに広告主側で処理/分析するために自社サーバーに送信できます。このメソッドは、データが利用可能になるのを待機するので、非常に正確でリアルタイムに近い間隔でデータを取得可能です。GCDは、リアルタイムにデータを返しますが、最終的なアトリビューション先の決定までに5秒以上掛かってしまった場合には、その返されたデータが正確性を欠く可能性があります。
- Pull APIは、リアルタイムに取得したアトリビューションデータを定期的に補足して、稀に発生する可能性のある通信エラーなどの際にデータを補完するために利用してください。
SDK実装のテスト
SDK実装が完了したらAppsFlyerの管理画面に移動して、SDKの実装テストページから、オーガニックインストールと非オーガニックインストール、アプリ内イベント、ディープリンク(リターゲティング)のテストが可能になります。これにより、インストールとアプリ内イベントが正しく計測され、媒体へ紐付けられるかを確認できます。
開発担当者がSDK実装のテストを実施する必要がある場合には、開発担当者を広告主アカウントのユーザー として追加し、管理画面にアクセスできるようにしてください。
テストのシナリオと手順の詳細については、SDKの実装テストを参照してください。