基本のSDK実装ガイド

概要:モバイルまたはCTVアプリ開発者と連携し、SDKをインストールしAndroidまたはiOSアプリに実装します。基本的な実装作業が完了すると、アプリはインストールとアプリ内イベントを計測する準備が整った状態になります。 

アプリにdev keyを実装する

AppsFlyerではdev keyを使用して個々のアカウントを一意に識別します。SDKがAppsFlyerアカウントに関するデータを安全に送受信できるようにするためには、dev keyが必要です。開発者はSDKをインストールして連携し、dev keyを埋め込む必要があります。 

Devキーの取得

ディベロッパーがSDKをインストールし実装する前に、Dev keyを取得する必要があります。

  1. AppsFlyer管理画面 左メニュー 設定 > アプリ設定 へ移動します。
  2. Dev keyをコピーし、モバイルディベロッパーへ共有してください。

dev keyを埋め込む

SDKインストールおよびSDK実装ガイドをモバイル開発者へ共有してください。

どこから始めれば良いですか?

AppsFlyer SDKの実装を計画する場合、最初に決定する必要があるのは、アプリの起動フロー内でSDKを初期化して開始する場所です。

基本的な経験則は、アプリの起動後できるだけ早くSDKにデータの送信を開始させることです。これにより、SDK はインストールイベントと、セッション後に発生した他のすべてのアプリ内イベントをキャプチャします。

ただし、GDPRやCCPAなどのプライバシー保護規制に準拠するために、ユーザーが情報の共有に同意するまで、AppsFlyerへのデータ送信(SDK起動)を遅延させる必要がある場合もあります。

Android ネイティブ iOS ネイティブ Unity React Native

AndroidネイティブでのSDK起動

SDKを起動するクラスを選択

SDKを global Application クラスもしくはActivityクラスのどちらで開始するかを選択します:

  • SDKをglobalApplicationクラスで起動:一般的に、アプリのUIが表示される前にクラスが読み込まれて初期化されるため、global Application クラス / サブクラスで SDK初期化するのがベストプラクティスです。これにより、ディープリンクを含むあらゆるシナリオでSDKを起動できます。
  • ユーザーがデータ共有にオプトインできるように、Activity class(遅延開始)SDKを開始します。これは、ユーザーの同意を得るために Activity classレンダリングされるユーザーインターフェイス (UI) が必要になるためです。

ANDROID 開発者向けの手順

  • 次の決定事項を開発者に通知します:
    • どのクラスで - Application または Activity - SDKを起動するか
    • どのオプトイン/オプトアウトシナリオを使用するか

UnityでのSDK起動

SDKの開始方法に関する このAppsFlyer公式デベロッパーハブの記事を開発者に渡してください。

React NativeでのSDKの起動

SDKの開始方法に関する このAppsFlyer公式デベロッパーハブの記事を開発者に渡してください。

プライバシー保護戦略を選択

ユーザーのプライバシーを保護する方法を選択します。 たとえば、インストール時にSDKを停止するか、サードパーティとのデータ共有を禁止するか、ユーザーデータを匿名化するか、特定の識別子を無効にするかを選択します。

使用可能なさまざまなプライバシー保護方法の詳細については、SDK のプライバシー保護方法を参照してください。

計測

SDKはアトリビューションの目的で識別子を取得します。インストールが記録され正しく成果が紐づけられるために、以下のガイドラインを確認し従ってください。

全てのプラットフォーム

インストールのユニーク識別子

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 Storeを利用できないエリアでも多くのオーディエンスにリーチしてアプリのプロモーションが可能です。

AppsFlyerでは、サードパーティアプリストアの文脈において、以下のように計測をサポートしています:

  • IMEI または Android ID:SDKは、IMEI または Android IDを自動的に収集しません。ただし、これらのIDを収集する必要がある場合(例えば、中国国内市場のアプリなど)、開発者は以下の収集タイプのいずれかを実装することができます。
    • 手動で収集:アプリで、setImeiData または setAndroidIdData APIを使用して、IMEIまたはAndroid IDをSDKに渡します(以下のタブのファンクションリファレンスを参照)。そして、SDKがAppsFlyerサーバーにデータを送信します。
      Android ネイティブUnity

      以下については、Android SDK リファレンスを参照してください:

    • デバイスID収集のオプトイン: setCollectIMEI と setCollectAndroidID を使用して IMEI または Android ID を収集するように SDKに強制します(下のタブの関数リファレンスを参照)。
      AndroidネイティブUnityReactNative

      以下については、Android SDK リファレンスを参照してください:

  • OAID:サードパーティAndroidアプリストアからインストールを計測します。詳しくは、OAID実装ガイドを参照してください。
  • インストールリファラ:SDKはSamsung GalleryとHuawei AppGalleryからのリファラデータの取得に対応しています。

iOSのみ

以下のセクションには、iOS 14以上のデバイスのサポートに関する重要な情報が含まれています。

App Tracking Transparency (ATT) サポートの実装

背景

iOS 14以降、IDFAの収集にはアプリユーザーの同意が必要になります。実際には、IDFAへのアクセスはApp Tracking Transparency (ATT) によって管理されることを意味します。そのため、iOS14以降の端末においては、AppsFlyerのiOS SDKもATTのフレームワークを利用して端末のIDFAへのアクセスを得ることになります。 ATTの概要については、ATTの基本仕様を参照してください。

iOS ネイティブUnity

参照:AppsFlyer公式デベロッパーハブ - 開発者向けATT実装の手順

IDFAを使用してアトリビューションを行う場合、first launch(初回起動)時にIDFAが送信されることが重要です。このため、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のダイアログでその目的を明確に示したメッセージを届けることは、ユーザーの許諾率を高めるのに役立ちます。

メッセージを作成するときには、以下のポイントに注意してください:

  • アプリがユーザーの同意を求めている理由を、ユーザーにもっとも分かりやすく説明しているテキスト/単語を使用しましょう。
  • データがどのように利用されるのかについてユーザーに知らせましょう。詳細はユーザーのプライバシーとデータの利用を参照してください。

メッセージが完成したら、開発担当者にそのテキストと実装ガイドを共有してください。

iOS ネイティブUnity

ATTダイアログの実装例を参照してください。

SKANアトリビューションのサポート

 

 

SKAN計測を完全にサポートするには、iOS SDK V6.2.3以降にアップデートしてください。

SKANは、iOSが広告主主導のアプリのインストールを検証するために使用するクラスです。 アプリのインストール検証プロセスには、ソースアプリと広告主アプリの両方が含まれます。

ソースアプリ:広告掲載アプリ - アドネットワークからの広告を表示することで広告キャンペーンに参加するアプリです。広告を表示できるようにアプリを設定することは、AppsFlyer SDKのサポート範囲ではありません。 設定する場合には、Appleのガイドに従ってください。

広告主アプリ(AppsFlyer SDKを使用するアプリ)の場合、AppsFlyerのSKANソリューションを使用してアトリビューションのポストバックを提供し、AppsFlyerはユーザーのプライバシーを維持しながらデータを収集、翻訳、集計します。 アプリの初回起動時に、AppsFlyerプラットフォームはマーケターが設定した設定を使用して、SKANコンバージョン値の設定方法をSDKに指示します。

SKANソリューションの使用方法:

  • マーケターは、AppsFlyerでSKAN計測を設定する必要があります。開発者はタスクを実行する必要はありません。
  • AppsFlyer SDK は自動的に必要なSKAN APIを呼び出します。
  • SKANの計測をAppsFlyerで実行する場合、他のSDKではSKANに関する呼び出しを全て無効にしてください。
  • AppStoreにおいて、開発者、マーケティング担当者のどちらも、この他に何も特別なアクションや登録プロセスは必要ありません。 

SKANの計測を無効にするには、SDK内で無効にするように開発担当者へ依頼してください。

iOS ネイティブUnityReact Native

SKANアトリビューションを無効にする: disableSKAdNetworkメソッドを使用します。

アプリ内イベントの計測

アプリ内イベント(IAE)により、アプリ内でのユーザーの動きに関するインサイトを得ることができます。アプリ内イベントを計測することで投資利益率(ROI)や生涯価値(LTV)などのKPIを計測できるようになります。そのため、時間を取って計測するイベントを定義することをオススメします。

計測したいアプリ内イベントが決まったら、そのイベント名とイベントパラメーターを実装ガイドのリンクと一緒に開発者に共有してください。 

アプリ内イベント計測の詳細については、リッチアプリ内イベント実装ガイドを参照してください。

全てのプラットフォーム

収益の計測

収益の情報は、どのアプリ内イベントでも送信できます。収益を計測する際には、必ず af_revenue パラメータを使用していることを確認してください。これは、AppsFlyerが管理画面やローデータのレポートで実際の収益としてカウントする唯一のイベントパラメータです。詳細はこちらを参照してください。

Android ネイティブiOS ネイティブUnity

アプリ内課金の検証

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時間以内に取得可能になります。 以下のクラウドストレージを接続可能です: • AWS上のAppsFlyer所有バケット • お客様が所有するストレージ(AWS, GCS, Big Query, Snowflake, Azure, Yandex) 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の実装テストを参照してください。

注意:アトリビューションテストを実行する際は、テスト端末(AndroidまたはiOS)を登録して、各インストールが新規インストールとして記録されるようにします。 テスト端末を登録することで、インストールが再インストールと見なされること防ぐことができます。