同意管理
iOS(Swift)の同意管理の実装方法を学びます。
使用法
同意管理モジュールは、トラッキング同意を細かいレベルで管理するためのシンプルなAPIを提供します。CocoaPodsの依存関係やCarthageフレームワークを含めている場合、同意管理はデフォルトで有効になり、ユーザーがトラッキングに同意したことをAPIに明示的に通知するまで、トラッキングコールは送信されません。
このモジュールの使用は推奨されており、CarthageとCocoaPodsフレームワークのビルドでは自動的に含まれ、有効になっています。Foundationフレームワークは外部依存関係です。
サポートされているプラットフォームは、iOS、macOS、tvOS、watchOSです。
詳細を学ぶ 同意管理について。
サンプルアプリ
私たちのライブラリ、トラッキング方法、ベストプラクティスの実装について理解を深めるために、Tealium for Swift Consent Managerのサンプルアプリを探索してみてください。
無効化
同意管理を無効にするには、初期化時のTealiumConfigオブジェクトの無効化モジュールリストにそれを含めます。
データレイヤー
モジュールが有効な間、以下の変数が各トラッキングコールと共に送信されます:
変数名 | 説明 | 例 |
---|---|---|
policy |
同意が収集されたポリシー(デフォルト:gdpr ) |
gdpr |
consent_status |
ユーザーの現在の同意ステータス | [consented , notConsented ] |
consent_categories |
ユーザーが選択した同意カテゴリの配列 | ["analytics" , "cdp" ] |
例
以下の例のコードは、同意管理にアクセスする方法を示しています。
class TealiumHelper {
var tealium: Tealium?
// ...
private func initTealium() {
let config = TealiumConfig(account: "ACCOUNT",
profile: "PROFILE",
environment: "ENVIRONMENT",
datasource: "DATASOURCE")
// 初期ステータスをnotConsentedに構成します。送信されるすべてのイベントは削除されます。
// config.initialUserConsentStatus = .notConsented
// 初期ステータスをconsentedに構成します。すべてのイベントは、同意ステータスが.notConsentedに変更されるまで即時に送信されます。
// config.initialUserConsentStatus = .consented
// 初期ステータスをunknown(デフォルト)に構成します。すべてのイベントは、同意ステータスが変更されるまでキューに入れられます。
config.initialUserConsentStatus = .unknown
// trueの場合、同意ステータスが変更されるたびに同意ログイベントが生成されます。
config.consentLoggingEnabled = false
self.tealium = Tealium(config: config)
// ...
}
// 全面的な同意を得る(すべてのカテゴリ)
func grantFullConsent() {
self.tealium?.consentManager()?.setUserConsentStatus(.consented)
}
/// 特定のカテゴリに対して部分的な同意を得る
/// 使用例:`grantPartialConsent([.analytics, .cdp])`
/// - Parameter categories: `[TealiumConsentCategories]`.
func grantPartialConsent(categories: [TealiumConsentCategories]) {
self.tealium?.consentManager()?.setUserConsentStatusWithCategories(status: .consented, categories: categories)
}
// 同意を拒否する;すべての未来のイベントは削除されます。
func declineConsent() {
self.tealium?.consentManager()?.setUserConsentStatus(.notConsented)
}
}
ユースケース
シンプルなオプトイン
この例では、ユーザーにシンプルな「オプトイン/オプトアウト」オプションを提供する方法を示しています。ユーザーが同意すると、自動的にすべてのトラッキングカテゴリにオプトインされます。彼らが同意を取り消すと、アクティブなカテゴリは残らず、トラッキングコールは送信されません。
func setConsentStatusSimple(_ consented: Bool) {
let status: TealiumConsentStatus = consented ? .consented: .notConsented
self.tealium?.consentManager()?.setUserConsentStatus(status)
}
Tealium Helperクラスで以下のメソッドを定義し、アプリのユーザーがトラッキングに同意または拒否したときに呼び出します。ユーザーがトラッキングに同意すると、同意管理は自動的にすべてのトラッキングカテゴリにユーザーをオプトインします。
グループ化されたオプトイン
この例では、トラッキングカテゴリがより少ない数の高レベルカテゴリにグループ化されているカテゴリベースの同意モデルを示しています。これは、あなたが定義します。
例えば、Tealiumの同意カテゴリ"big_data"
、"analytics"
、"monitoring"
を"performance"
という単一のカテゴリの下にグループ化することを選択するかもしれません。これは、全カテゴリリストから選択するよりもユーザーにとって簡単かもしれません。あなたはこれを最小許可から最大許可(全カテゴリ)までのスライダーインターフェースで表現することを選択するかもしれません。
func updateConsentPreferences(_ dict: [String: Any]) {
if let status = dict["consentStatus"] as? String {
var tealiumConsentCategories = [TealiumConsentCategories]()
let tealiumConsentStatus = (status == "consented") ? TealiumConsentStatus.consented : TealiumConsentStatus.notConsented
if let categories = dict["consentCategories"] as? [String] {
tealiumConsentCategories = TealiumConsentCategories.consentCategoriesStringArrayToEnum(categories)
}
self.tealium?.consentManager()?.setUserConsentStatusWithCategories(status: tealiumConsentStatus, categories: tealiumConsentCategories)
}
}
// カテゴリのグループを定義し、同意の構成をconsentManager APIに構成するための関数の例。
// ユーザーが構成を保存したときにこの関数を呼び出します。
func setUserConsentPreferences(){
// グループ化されたカテゴリを含む辞書を定義します。
let consentGroups = ["Off" : [],
"Performance": ["analytics", "monitoring", "big_data", "mobile", "crm"],
"Marketing": ["analytics", "monitoring", "big_data", "mobile", "crm", "affiliates", "email", "search", "engagement", "cdp"],
"Personalized Advertising": ["analytics", "monitoring", "big_data", "mobile", "crm", "affiliates", "email", "search", "engagement", "cdp", "display_ads", "personalization", "social", "cookiematch", "misc"]]
// これはユーザーが選択した構成レベルです。実際のアプリでは通常、動的です。
let userSelection = "Marketing"
if let userList = consentGroups[userSelection] {
let settingsDict: [String: Any] = ["consentStatus": "consented", "consentCategories": userList]
updateConsentPreferences(settingsDict)
}
}
カテゴリベースのオプトイン
この例では、ユーザーが全カテゴリリストから各カテゴリを明示的に選択しなければならないカテゴリベースの同意モデルを示しています。デフォルトの状態は"Unknown"
で、ユーザーが同意を提供するまでヒットをキューに入れます。ユーザーが任意のカテゴリに同意すると、イベントはデキューされ、同意したカテゴリデータが各トラッキングコールに追加されます。
// Tealium consentManager APIを呼び出すためのヘルパーメソッド
func updateConsentPreferences(_ dict: [String: Any]) {
if let status = dict["consentStatus"] as? String {
var tealiumConsentCategories = [TealiumConsentCategories]()
let tealiumConsentStatus = (status == "consented") ? TealiumConsentStatus.consented : TealiumConsentStatus.notConsented
if let categories = dict["consentCategories"] as? [String] {
tealiumConsentCategories = TealiumConsentCategories.consentCategoriesStringArrayToEnum(categories)
}
self.tealium?.consentManager()?.setUserConsentStatusWithCategories(status: tealiumConsentStatus, categories: tealiumConsentCategories)
}
}
// カテゴリのリストを取得し、Tealium consentManager APIに渡すための関数の例
func setUserConsentPreferences(_ categories: [String]){
let settingsDict: [String: Any] = ["consentStatus": "consented", "consentCategories": categories]
updateConsentPreferences(settingsDict)
}
最終更新日 :: 2024年March月29日