AppsFlyer SDKでのユーザーオプトイン / オプトアウト

概要: クライアント(アプリ所有者)の皆さまは、AppsFlyer SDKを使用してアトリビューションデータをAppsFlyerに送信しています。ただし、場合によっては、アプリユーザーの要求、オプトイン/オプトアウト、またはGDPRやCCPAなどのプライバシー規制により、当社へのデータ送信を停止または制限する必要があります。

OptInOptOut_us-en.png

AppsFlyerプライバシーに関するお問合せ:お客様とAppsFlyer 間のプライバシー事項については、AppsFlyer Services Privacy Policy に準拠しています。本サービスプライバシーポリシーに関するご質問または当社のデータプロテクション事務局へのご質問は、privacy@appsflyer.com までご連絡ください。一般データ保護規則第27条に基づき、AppsFlyer のEU域内の代表は、AppsFlyer Germany GmbH Kurfürstendamm 11, c/o WeWork, 10719 Berlin, Germany (お問合せ先:privacy@appsflyer.com; +49-30-3119-9129)

オプトインとオプトアウトのシナリオ

  • アプリに埋め込まれたAppsFlyer SDKは以下のように設定できます。
    • オプトアウト:データ収集を停止または制限します。
    • オプトイン:オプトアウト後、データ収集を再開します。
  • 規制要件とビジネス要件を考慮し、アプリ開発者とマーケティング担当者は、この記事で詳述されている、オプトイン/オプトアウトを実装する必要があります。
  • オプトアウトを使用すると、次のことができます。
    • データ収集を禁止または制限するGDPRやCCPAなどの規制を遵守します。
    • 完全なオプトアウト:全てのアトリビューションデータの収集を停止します。
    • 部分的なオプトアウト: 一部のデータを送信する、または送信されたデータを匿名化します。
    • 選択的オプトアウト: 特定の規制またはアプリユーザーの年齢に基づいてオプトアウトします。
  • オプトインを使用:オプトアウトをオプトインに変更できます。

オプトアウトしたユーザー

オプトアウトは、規制やユーザーの要件に応じて、さまざまなレベルで実行できます。詳細については、オプトアウトシナリオを使用して適切なフローに従います。これを行って、オプトアウトリクエストへのコンプライアンスを確保し、必要に応じてアトリビューションデータを引き続き収集します。

  • オプトアウトが有効化されているシナリオ:AppsFlyer IDがハッシュ化されます。
  • より分かりやすいように、この記事では次のようにAndroidメソッド名を使用しています:
    • トラッキング開始メソッド:
      • Android SDK: start
      • iOS SDK: start
    • トラッキング停止メソッド:
      • Android SDK: stop
      • iOS SDK: AppsFlyerTracker.shared().isStopTracking = true

シナリオ

インストール時にオプトアウト

coppa_compliant_appsflyer.png

いつ :最初の起動時(例: COPPAコンプライアンス

状況:すべてのセッションにおいてイベントの記録を実行するには、ユーザーの同意を必要とする。ユーザーが計測に同意した場合(例:特定の年齢を超えたユーザー)、アプリはSDKの start メソッドを呼び出します。それ以外の場合は、start メソッドを呼び出さないでください。

注意

start が一度も呼び出されていない場合、stop は使用しないでください。

方法start メソッドは、オプトインされたユーザーのセッション開始時に常に呼び出される必要がありますが、オプトアウトされたユーザーに対しては呼び出されるべきではありません。また、オプトインしたことのないユーザーのアプリ内イベントは送信できません。これは不明なユーザー経由のオーガニックイベントと見なされるためです。

従って、アプリの場合、start が事前に呼び出されたかどうかを示す永続的なフラグパラメーターを含むインストールオプトアウトを実装することを推奨します。このフラグは、start または logEvent メソッドが呼び出される前に、必ずチェックされる必要があります。

AppsFlyerに送信されるデータ:データは送信されません。ユーザーが続いてオプトインした場合、startが呼び出されてから、アトリビューションとセッションデータが送信されます。

 例

com.carefulapp では、インストール時にユーザーが会員登録する必要があります。フォームには「私は13歳以上です」というチェックボックスが含まれています。開発者は、is_tracking というフラグを追加し、このボックスがオンになっている登録に対してのみ、これを true とし、その後 start をアクティブにします。

コード例はこちらをご参照ください。

サードパーティとのデータ共有を防止

いつSDKが初期化されるたびに。 

何を:ユーザーは、第三者とのデータ共有をオプトアウトするよう要求します。最初の start 呼び出しの前に、このオプションをAppsFlyer SDKにて有効化することで、セッション全体に対して次のことが適用されます。

  • SRN経由のユーザーはオーガニックユーザーと見なされ、そのユーザーのデータは連携パートナーとも共有されません。
  • 通常のアドネットワーク(SRN以外)経由のユーザーは、AppsFlyer上で正しく媒体へ紐付けされますが、ポストバック、API、ローデータレポート、またはその他の方法においてアドネットワークへデータは共有されません。

方法

イベントデータの共有を防止するには、以下を実行します。

  • SDK (AndroidiOS—SDK V5.4.1 以降):
    • すべてのメディアソースがイベントを受信しないようにする:SDK メソッド setSharingFilterForAllPartners を使用します。
    • 1つまたは複数のメディアソースがイベントを受信しないようにする:SDK メソッド setSharingFilter を使用します。
  • サーバー間(S2S)API:

AppsFlyerに送信されるデータ:データはAppsFlyerに送信され保存されますが、AppsFlyerの連携パートナーに共有されることはありません。

 例

「com.to.california」はカリフォルニア州の複数のテーマパーク向けのトラベルアプリです。CCPAに準拠するため、カリフォルニア在住者がオプトアウトの申請をした場合、ユーザーイベントデータを第三者と共有しないようにAppsFlyerに通知します。  

セッションのオプトアウト

いつ

状況:すべてのアプリのセッションに、セッション中にイベントとデータの計測を行うことに対するユーザーの同意を必要とします。

方法セッションのオプトアウト シナリオの場合、最初のSDK呼び出しは、ユーザーがデバイスからデータを送信することに同意または拒否した後に行われます。

  • ユーザーがデータ送信に同意した場合、start メソッドを呼び出します。
  • ユーザーがデータ送信を拒否した場合、start は呼び出さないでください。

詳細な手順については、AndroidiOS のオプトアウトガイドをご覧ください。

AppsFlyerに送信されたデータは、各セッションのオプトアウトステータスによって、次のように異なります。

  • オプトアウトセッション :データは送信されません。
  • オプトインセッション :すべてのセッションデータが送信されます。:ユーザーが最初にオプトインしたときに計測データが送信されます。

 例

com.adultsplayは、18歳以上の大人向けのカジュアルゲームアプリです。ユーザーは会員登録する必要はありませんが、アプリ起動のたびに年齢を確認する必要があります。ユーザーが18歳以上であることをユーザーが確認したセッションでは、完全なゲーム体験が計測されます。それ以外の場合、計測は実行されません。

開発者は、is_tracking と呼ばれるフラグを追加しました。これは、18歳以上を確認するセッションでのみ true になります。このフラグが true の場合、start メソッドが呼び出されます。そうでない場合、start は呼び出されません。

1回限りのオプトアウト

OpenGDPR-logo-BLK.png

いつ :いつでも(GDPR)

状況:アプリ所有者は、計測データとインストール後のデータを収集します。ユーザーは、データの収集を停止するように要求します。例:GDPRリクエストに準拠

方法 start を呼び出したあと直接 stop を呼び出さないでください!

代わりに、初回起動時に requestListener と一緒に start メソッドを使用してください。正常に完了後、コールバック関数が stop を呼び出します。

これ以降のすべてのセッションでは、start を呼び出さないでください。

AppsFlyerに送信されるデータ: インストールとセッションデータがAppsFlyerに送信されます。stop メソッドが呼び出されたあとは、AppsFlyerにはデータは一切送信されません。

 例

com.watchmegrowは、植物を育てて見たりする植物成長アプリです。アプリの所有者は、すべてのアプリ内アクティビティデータを秘密にしたいと考えています。

初回起動時に、ディベロッパーは requestListener と一緒に start を呼び出します。正常に完了した通知を受け取ると、コールバック関数から stop を呼び出し、永続的なパラメーターである is_first_launch を falseに設定します。それ以降の起動では、is_first_launch が false であることを確認し、start をスキップします。

 

コード例はこちらからご確認ください。

インストールの計測と匿名化

いつ :最初の起動時

状況 :アプリの所有者はすべてのアトリビューションデータを収集しますが、アプリ内イベントやセッションデータなどのすべての詳細情報をアトリビューションのないオーガニックデータとして収集します。インストール後、すべてのデバイスIDは、SDKからAppsFlyerに送信されるときに匿名化されます。

方法 start を呼び出したあと直接 stop を呼び出さないでください!

代わりに、初回起動時に requestListener と一緒に start メソッドを使用してください。正常に完了後、コールバック関数で anonymizeUser(true) を呼び出します。

AppsFlyerに送信されるデータ:

  • インストール時: 完全なアトリビューションデータがAppsFlyerに送信されます
  • インストール後 :アプリ内イベントを含むセッションデータがAppsFlyerに送信されますユーザー識別情報は、AppsFlyerが受信すると匿名化またはハッシュ化されます。

 例

com.munisticアプリのアプリ所有者は、すべてのユーザーが平等に生まれていると信じており、すべてのインストール後のアクションをオーガニックのみとして表示することを好みます。

初回起動時に、ディベロッパーは requestListener と一緒に start を呼び出します。正常に完了すると、コールバック関数から anonymizeUser(true) を呼び出します。

コード例はこちらをご参照ください。

リターゲティングキャンペーンのオプトアウト

オプトアウトしたユーザーをリターゲティングキャンペーンから除外することを検討しています。これらのユーザーは、オプトアウトしたためにリターゲティングされることに不満を抱く可能性があります。

アクティブユーザーを対象とするリターゲティングキャンペーンを手動で実行する場合は、オプトアウトしたユーザーをメディアソースリストに送信されるリストから削除してください。

または、 AppsFlyerオーディエンスを使用している場合(オーディエンスリストを自動的に作成して、選択したメディアソースに送信するため)、オプトアウトしたユーザーは、AppsFlyerによってメディアソースに送信されるメディアデバイスリストから除外されます。

stop APIとディープリンク

stop APIを使用すると、アプリに埋め込まれたAppsFlyer SDKによるすべての外部通信が停止します。

したがって、stop を呼び出した後、短縮リンクはAppsFlyer SDKによってデコードされなくなります。つまり、短縮リンクは onAppOpenAttribution へを呼び出さず、ディープリンクが正しく実行されません。

オプトアウトしたユーザーの割合が比較的高いアプリで、ユーザー向けのリターゲティングキャンペーンを計画している場合は、ロングリンクを使用し、ショートリンクの使用は避けてください。

SDK機能の再起動

オプトアウトしたユーザーがオプトインに同意した場合、start メソッドを呼び出してSDKを再起動し、アトリビューションデータの計測を開始してください。

StrictモードSDK(iOSのみ)

ディベロッパーは、コード内のAdSupportフレームワークとIDFA収集を参照せずに、アプリを提出したい場合があります。そのような場合は、StrictモードSDKをご利用ください。