同意管理
使用方法
Consent Manager モジュールは、細かいレベルで同意のトラッキングを管理するのに役立つシンプルな API を提供します。これは、すべての Apple プラットフォーム (iOS、iPadOS、tvOS、watchOS、macOS、macOS Catalyst) でサポートされます。
Tealium Swift ライブラリのバージョン 2.x では、Consent Manager モジュールに重大な変更を行っています。
- Consent Manager はデフォルトで無効になっています (有効にするには 完全同意 を参照してください)
- Consent Manager は
TealiumCore
モジュールに組み込まれています - CCPA サポートを追加しました
- 同意の有効期限オプション
同意管理 と同意ポリシーの詳細は、こちらから参照してください。
同意
ポリシーの設定
初期化中に、同意ポリシーを次のいずれかに設定します。
.gdpr
.ccpa
Consent Management モジュールは、コア ライブラリに含まれており、同意ポリシーが設定されるまでアクティブになりません。
所与の時点で 1 つのデバイスに対して実施されるポリシーは 1 つのみです。
GDPR ポリシーを設定するには:
class TealiumHelper {
var tealium: Tealium?
private func initTealium() {
let config = TealiumConfig(...)
config.consentPolicy = .gdpr
//...
}
}
同意記録イベント (同意ステータスが変更される都度、生成されるもの) を設定するには:
config.consentLoggingEnabled = true
同意の有効期限
consentExpiry
プロパティを用いて、同意選択の有効期限を設定します。
次の例では、同意ポリシーを GDPR に設定し、有効期限を 90 日に設定しています。
class TealiumHelper {
var tealium: Tealium?
private func initTealium() {
let config = TealiumConfig(...)
config.consentPolicy = .gdpr
config.consentExpiry = (90, .days)
//...
}
}
同意の有効期限が過ぎ次第、コールバックをトリガーするには、 TealiumConfig
オブジェクトを用いてコールバックを定義します。
class TealiumHelper {
var tealium: Tealium?
private func initTealium() {
let config = TealiumConfig(...)
config.consentPolicy = .gdpr
config.consentExpiry = (90, .days)
config.onConsentExpiration = {
print("Consent expired")
}
//...
}
}
または、 TealiumConsentManager
オブジェクトでコールバックを定義します。
tealium = Tealium(config: config) { [weak self] _ in
self?.tealium?.consentManager?.onConsentExpiration = {
print("Consent expired")
}
}
完全同意の設定
完全な同意を設定するには:
func grantFullConsent() {
self.tealium?.consentManager?.userConsentStatus = .consented
}
部分的 (カテゴリ別) 同意の設定
部分的同意を設定するには、同意カテゴリのサブセットを指定します。これにより、暗黙のうちに、 userConsentStatus
が .consented
に設定されます。
func grantPartialConsent(categories: [TealiumConsentCategories]) {
self.tealium?.consentManager?.userConsentCategories = categories
}
利用の例: grantPartialConsent([.analytics, .cdp])
(パラメータ カテゴリを参照)
同意拒否の設定
同意を拒否するには、同意ステータスを設定します。
func declineConsent() {
self.tealium?.consentManager?.userConsentStatus = .notConsented
}
カスタム同意
貴社の同意要件が当社の標準的な GDPR および CCPA のポリシーでカバーされていない場合は、カスタム同意ポリシーを作成します。
ConsentPolicy
プロトコルを実装します。class SomeCustomConsentPolicy: ConsentPolicy { // implement methods... }
新たなカスタム ポリシーに
consentPolicy
プロパティ (TealiumConfig
オブジェクト上のもの) を設定します。このために、関連タイプとTealiumConsentPolicy.custom
列挙型 を使用します。config.consentPolicy = .custom(SomeCustomConsentPolicy.self)
カスタム同意ポリシーが実装された後、必要に応じて ConsentPolicy
にて使用可能な以下のプロパティをオーバーライドします:
Property | 型 | 説明 |
---|---|---|
name |
String |
ConsentPolicy の名前 |
consentPolicyStatusInfo |
[String: Any]? |
追加されるキー値データの[String: Any] を、各 TealiumDispatch のペイロードに返します |
consentTrackingEventName |
String |
同意の変更をログ (記録) するときに用いるイベント名 (キー: tealium_event ) を設定します |
defaultConsentExpiry |
(time: Int, unit: TimeUnit) |
この ConsentPolicy についてのデフォルト有効期限を設定します |
preferences |
UserConsentPreferences |
現在の UserConsentPreferences 。設定が変更されるときに ConsentManager により自動的に更新されます |
shouldLogConsentStatus |
Bool |
同意の変更のログ (記録) が必要かどうか設定します |
shouldUpdateConsentCookie |
Bool |
TagManagement モジュールのウェブビューで Cookie を更新するかどうかを設定します |
trackAction |
TealiumConsentTrackAction |
同意ステータス (許可、禁止、キューに追加) に基づくトラッキング アクション |
updateConsentCookieEventName |
String |
shouldUpdateConsentCookie を [true] に設定するときに用いるイベント名を設定します |
以下は、カスタム同意ポリシーの完全な例です。
class MyCustomConsentPolicy: ConsentPolicy {
var preferences: UserConsentPreferences
required init(_ preferences: UserConsentPreferences) {
self.preferences = preferences
}
var name: String = "my custom policy"
var defaultConsentExpiry: (time: Int, unit: TimeUnit) = (90, .days)
var shouldUpdateConsentCookie: Bool = false
var updateConsentCookieEventName: String = "custom_consent_update"
var consentPolicyStatusInfo: [String : Any]? {
["custom_consent_status": preferences.consentStatus.rawValue,
"custom_consent_categories": preferences.consentCategories?.map({ $0.rawValue }),
"custom_policy_key": name]
}
var trackAction: TealiumConsentTrackAction = .trackingAllowed
var consentTrackingEventName: String = "custom_consent_update"
var shouldLogConsentStatus: Bool = true
}
var tealium: Tealium?
let config = TealiumConfig(...)
config.consentPolicy = .custom(MyCustomConsentPolicy.self)
/// ... other configuration options
tealium = Tealium(config: config)
GDPRConsentPolicyCreatable
または CCPAConsentPolicyCreatable
のいずれかのプロトコルに準拠したカスタム ポリシーを作成します。カスタム ポリシーを作成のうえ、目的のものをオーバーライドした後、 config.consentPolicy
を .custom(YourCustomPolicy.self)
に設定します。
例
既存の GDPR 実装を用いるが、ポリシーの名称をオーバーライドする (トラッキング ペイロードで policy
値をオーバーライドする):
class CustomGDPRConsentPolicy: GDPRConsentPolicyCreatable {
var preferences: UserConsentPreferences
required init(_ preferences: UserConsentPreferences) {
self.preferences = preferences
}
var name: String {
"customGDPRPolicy"
}
}
config.consentPolicy = .custom(CustomGDPRConsentPolicy.self)
Tealium EventStream により同意値が固定化されるのを回避するためにポリシー データ キーを再マッピングする。
class CustomGDPRConsentPolicy: GDPRConsentPolicyCreatable {
var preferences: UserConsentPreferences
required init(_ preferences: UserConsentPreferences) {
self.preferences = preferences
}
var consentPolicyStatusInfo: [String : Any]? {
["custom_consent_status": preferences.consentStatus.rawValue,
"custom_consent_categories": preferences.consentCategories?.map({ $0.rawValue }),
"custom_policy_key": "customGDPRPolicy"]
}
}
送信された同意記録イベントの名前をカスタマイズします。
class CustomGDPRConsentPolicy: GDPRConsentPolicyCreatable {
var preferences: UserConsentPreferences
required init(_ preferences: UserConsentPreferences) {
self.preferences = preferences
}
var consentTrackingEventName: String {
switch preferences.consentStatus {
case .consented:
return "user_consented"
case .notConsented:
return "user_not_consented"
case .unknown:
return "user_consent_unknown"
}
}
}
thirdPartyConsentProvider
で別の同意プロバイダーを参照している場合には、代わりにサードパーティ同意値を返します。
class CustomGDPRConsentPolicy: GDPRConsentPolicyCreatable {
let thirdPartyConsentProvider = ThirdPartyProvider()
var preferences: UserConsentPreferences
required init(_ preferences: UserConsentPreferences) {
self.preferences = preferences
}
var consentPolicyStatusInfo: [String: Any]? {
let status = thirdPartyConsentProvider.getConsent()
return ["my_consent_status": status]
}
}
使用事例
完全に同意
次の例は、同意ポリシーの同意または拒否を選択するオプションをユーザーに提供する方法を示しています。ユーザーが同意したまたは拒否したときには、貴社が選択した同意ポリシーのルールが有効になります。同意ポリシーの詳細は、こちらから参照してください。
func setConsentStatusSimple(_ consented: Bool) {
let status: TealiumConsentStatus = consented ? .consented: .notConsented
self.tealium?.consentManager?.userConsentStatus = status
}
Tealium Helper クラスでメソッドを定義し、アプリ ユーザーがトラッキングに同意したかトラッキングを拒否した場合に呼び出します。ユーザーがトラッキングに同意する場合、Consent Manager によって自動的にすべてのトラッキング カテゴリに含まれます。
部分的同意 (カテゴリ別) (GDPR)
カテゴリベースの同意では、ユーザーは、カテゴリの包括的なリストから、明示的に各カテゴリを選択する必要があります。
以下のヘルパー メソッドは、 TealiumConsentManager
API からのメソッドを呼び出します。
func updateConsentPreferences(_ dict: [String: Any]) {
var tealiumConsentCategories = [TealiumConsentCategories]()
if let categories = dict["consentCategories"] as? [String] {
tealiumConsentCategories = TealiumConsentCategories.consentCategoriesStringArrayToEnum(categories)
tealium.consentManager?.userConsentCategories = tealiumConsentCategories
} else if let status = dict["consentStatus"] as? String {
let tealiumConsentStatus = (status == "consented") ? TealiumConsentStatus.consented : TealiumConsentStatus.notConsented
self.tealium?.consentManager?.consentStatus = status
}
}
}
カテゴリのリストを更新するには:
func setUserConsentPreferences(_ categories: [String]){
let settingsDict: [String: Any] = ["consentStatus": "consented", "consentCategories": categories]
updateConsentPreferences(settingsDict)
}
カテゴリ グループ (GDPR)
カテゴリベースの同意モデルでは、トラッキング カテゴリは、カスタマーが定義した少数の上位カテゴリにグループ化されます。
たとえば、Tealiumの同意カテゴリ"big_data"
、"analytics"
、"monitoring"
を"performance"
という1つのカテゴリにグループ化することができます。このようにすると、ユーザーにとって、カテゴリの包括リストから選択するよりも簡単になる可能性があります。これを、最小限の許可から最大限の許可まで(すべてのカテゴリ)のスライダーインターフェイスで表すこともできます。
func updateConsentPreferences(_ dict: [String: Any]) {
var tealiumConsentCategories = [TealiumConsentCategories]()
if let categories = dict["consentCategories"] as? [String] {
tealiumConsentCategories = TealiumConsentCategories.consentCategoriesStringArrayToEnum(categories)
tealium.consentManager?.userConsentCategories = tealiumConsentCategories
} else if let status = dict["consentStatus"] as? String {
let tealiumConsentStatus = (status == "consented") ? TealiumConsentStatus.consented : TealiumConsentStatus.notConsented
self.tealium?.consentManager?.consentStatus = status
}
}
}
以下のヘルパー機能は、カテゴリのグループを定義し、ユーザー同意設定を設定します。
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)
}
}
サンプルアプリ
当社のライブラリ、トラッキン グメソッド、ベストプラクティスの実装に精通していただけるよう、Tealium Consent Manager for Swift の Consent Manager サンプル アプリをご確認いただけるようになっています。
このページはお役にたちましたでしょうか?
最終更新日 :: 2022年August月29日