Prosleđivanje saglasnosti
OptSens prosleđuje svaku odluku servisu Google Consent Mode i partnerima za atribuciju (AppsFlyer, Adjust, Branch, Kochava). Prosleđuje se samo odluka o saglasnosti; partnerski SDK-ovi su vaši. Firebase zavisi od prekidača Consent Mode u kontrolnoj tabli. Kako partneri za atribuciju primaju odluku zavisi od platforme: automatski na Androidu, a preko jednog malog forwarder-a po partneru na iOS-u (ispod).
- Android
- iOS / tvOS
Prosleđivanje je automatsko. SDK u toku rada prepoznaje Firebase i svakog partnera za atribuciju i prosleđuje saglasnost bez koda u aplikaciji. Ako aplikacija ne sadrži određeni partnerski SDK, za njega se ništa ne prosleđuje.
- Firebase (Google Consent Mode): dodajte
com.google.firebase:firebase-analyticsigoogle-servicesplugin kao i obično. Prosleđuje se kada je prekidač Consent Mode u kontrolnoj tabli uključen. - AppsFlyer, Adjust, Branch, Kochava: prosleđuju se automatski kad god je SDK u aplikaciji.
Na Androidu ne dodajete nikakav kod za prosleđivanje.
Firebase i Kochava su automatski: Firebase preko podrazumevanog forwarder-a (zavisi od prekidača Consent Mode), Kochava preko IAB stringa koji SDK već upisuje. AppsFlyer, Adjust i Branch imaju consent API-je samo u Swift-u, pa dodajete jedan forwarder po partneru koga koristite i sastavljate ih.
Dodajte forwarder za svakog partnera:
import OptSensCore
import AppsFlyerLib
struct AppsFlyerConsentForwarder: ConsentForwarder {
func apply(_ signals: GcmSignals, gdprApplies: Bool, gcmEnabled: Bool) {
let v = ForwardingMappings.appsFlyer(signals, gdprApplies: gdprApplies)
AppsFlyerLib.shared().setConsentData(AppsFlyerConsent(
isUserSubjectToGDPR: NSNumber(value: v.isUserSubjectToGDPR),
hasConsentForDataUsage: NSNumber(value: v.hasConsentForDataUsage),
hasConsentForAdsPersonalization: NSNumber(value: v.hasConsentForAdsPersonalization),
hasConsentForAdStorage: NSNumber(value: v.hasConsentForAdStorage)))
}
}
import OptSensCore
import AdjustSdk
struct AdjustConsentForwarder: ConsentForwarder {
func apply(_ signals: GcmSignals, gdprApplies: Bool, gcmEnabled: Bool) {
guard let sharing = ADJThirdPartySharing(isEnabled: nil) else { return }
for o in ForwardingMappings.adjust(signals, gdprApplies: gdprApplies) {
sharing.addGranularOption("google_dma", key: o.key, value: o.value)
}
Adjust.trackThirdPartySharing(sharing)
}
}
import OptSensCore
import BranchSDK
struct BranchConsentForwarder: ConsentForwarder {
func apply(_ signals: GcmSignals, gdprApplies: Bool, gcmEnabled: Bool) {
let v = ForwardingMappings.branch(signals, gdprApplies: gdprApplies)
Branch.setDMAParamsForEEA(v.eeaRegion,
adPersonalizationConsent: v.adPersonalizationConsent,
adUserDataUsageConsent: v.adUserDataUsageConsent)
}
}
Sastavite forwarder-e za SDK-ove koje vaša aplikacija koristi i prosledite ih u
configure. CompositeConsentForwarder.automatic zadržava Firebase automatskim:
OptSens.configure(apiKey: "YOUR_SDK_ID",
options: OptSensOptions(consentForwarder: CompositeConsentForwarder([
CompositeConsentForwarder.automatic, // Firebase (automatski)
AppsFlyerConsentForwarder(), // samo ako aplikacija koristi AppsFlyer
AdjustConsentForwarder(), // samo ako aplikacija koristi Adjust
BranchConsentForwarder(), // samo ako aplikacija koristi Branch
])))
Da bi Firebase prosleđivao na iOS-u, Firebase Analytics mora biti učitan u vašoj aplikaciji, ne samo povezan. Prava aplikacija koja koristi Analytics ovo ispunjava.
Nakon odbijanja, Google Consent Mode i dalje šalje pingove bez kolačića, po
dizajnu (analytics_storage = denied znači bez identifikatora, a ne prestanak slanja). Da ne
biste slali ništa pre saglasnosti, kontrolišite i sopstveno prikupljanje.