[iOS] 0. Migrationsguide
Den här guiden hjälper dig att migrera från den tidigare versionen av CMP SDK till den nuvarande versionen. Vi kommer att täcka ändringar i metodnamn, parametrar och ny eller föråldrad funktionalitet. För exempel på demoappar, kolla denna länk.
Var medveten om att den här versionen av CMP SDK byggdes om helt från grunden, och därför representerar den en stor brytande förändring, eftersom alla metoder döptes om, liksom signaturerna, och erbjuder nu återuppringningar till nästan alla metoder. I samtliga fallmåste du ändra din kod och uppdatera dina beroenden för att säkerställa att din mobilapp fungerar som förväntat. Vi också råder dig starkt för att be dina användare att avinstallera och installera om din mobilapp, för att undvika problem med data som finns kvar på enheten.
arkiv
Observera att alla våra arkiv har ändrats för iOS SDK. Följ instruktionerna nedan för att ta reda på var du ska peka din beroendehanterare.
Lägg också märke till att vi tillhandahåll inte en statisk version av vårt anpassade ramverk.
kokopod
På din Podfile, ersätt den föregående raden med den nedan:
pod 'cm-sdk-ios-v3, '3.0.0'
Efter att ha ändrat, kör detta på kommandoraden:
pod install --repo-update
Swift Package Manager
Vårt XCFramework-paket finns nu på https://github.com/iubenda/cm-sdk-xcframework-v3.
På XCode, gå till menyn Arkiv > Lägg till paketberoende och peka på webbadressen ovan.
Viktiga migrationspunkter
-
Delegatmönster: Istället för enskilda lyssnare använder den nya versionen ett enda delegatprotokoll (
CMPManagerDelegate
) för att hantera händelser. Den innehåller 4 huvudhändelser:-
didReceiveConsent(consent: String, jsonObject: [String : Any])
Detta utlöses när samtyckeslagret stängdes efter att användaren uppdaterat sina samtycken ELLER när man åberopar metoder som orsakar ändringar i samtyckena, som acceptAll, rejectAll, acceptVendors, rejectVendors, etc. Det betyder att användaren accepterade eller avvisade några av alla. av samtyckena och att dessa sparades korrekt i enheten. -
didShowConsentLayer
Detta utlöses när samtyckeslagret faktiskt visades. Det betyder att det inte fanns ett giltigt samtycke i enheten, så ett nytt bör hämtas. -
didCloseConsentLayer
Detta utlöses när SDK:n kontrollerade behovet av ett samtycke, men det behövdes inte och lagret visades inte. Det betyder att det redan finns en giltig i enheten, så en ny är inte nödvändig och tue samtyckeslager kommer inte att visas. -
didReceiveError
Detta utlöses när SDK-operationen har orsakat något fel.
-
- Kompletteringshanterare: Många metoder inkluderar nu kompletteringshanterare för asynkrona operationer. Uppdatera din kod för att hantera dessa återuppringningar på rätt sätt.
-
Samtyckessträng: Använda
exportCMPInfo()
istället förgetConsentString()
för att hämta samtyckesinformationen. - Säljarens samtycke: Metoderna för att få tillstånd från leverantörer och ändamål returnerar nu arrayer av ID:n. Du kan behöva justera din logik för att hantera dessa arrayer.
-
USA:s sekretesssträng: Smakämnen
getUSPrivacyString()
metoden har fasats ut. Om du använde detta för CCPA-efterlevnad, observera att den här metoden inte är tillgänglig längre. -
Kontroll av samtyckeskrav: Använd det nya
checkIfConsentIsRequired(completion:)
metod för att automatiskt avgöra om samtycke behövs innan samtyckesskiktet visas.
Metoder och signaturer ändras
1. initiering
- Old:
CMPConsentTool(cmpConfig: CmpConfig).initialize()
- Ny:
CMPManager.shared.setUrlConfig(UrlConfig)
2. Ställ in UI-konfiguration
- Old:
.withCmpViewControllerConfigurationBlock { ... }
- Ny:
CMPManager.shared.setWebViewConfig(ConsentLayerUIConfig())
3. Markera och öppna samtyckeslager
- Old:
check({ ... }, isCached: Bool)
- Ny:
checkWithServerAndOpenIfNecessary(completion: (Error?) -> Void)
4. Öppna samtyckeslager
- Old:
openView()
- Ny:
openConsentLayer(completion: (Error?) -> Void)
5. Acceptera alla samtycken
- Old:
acceptAll(onFinish: () -> Void)
- Ny:
acceptAll(completion: (Error?) -> Void)
6. Avvisa alla samtycken
- Old:
rejectAll(onFinish: () -> Void)
- Ny:
rejectAll(completion: (Error?) -> Void)
7. Aktivera syften
- Old:
enablePurposeList([String], onFinish: () -> Void)
- Ny:
acceptPurposes([String], updatePurpose: Bool, completion: (Error?) -> Void)
8. Inaktivera syften
- Old:
disablePurposeList([String], onFinish: () -> Void)
- Ny:
rejectPurposes([String], updateVendor: Bool, completion: (Error?) -> Void)
9. Aktivera leverantörer
- Old:
enableVendorList([String], onFinish: () -> Void)
- Ny:
acceptVendors([String], completion: (Error?) -> Void)
10. Inaktivera leverantörer
- Old:
disableVendorList([String], onFinish: () -> Void)
- Ny:
rejectVendors([String], completion: (Error?) -> Void)
11. Få alla ändamål
- Old:
getAllPurposes() -> String
- Ny:
getAllPurposesIDs() -> [String]
12. Aktivera syften
- Old:
getEnabledPurposes() -> String
- Ny:
getEnabledPurposesIDs() -> [String]
13. Skaffa alla leverantörer
- Old:
getAllVendors() -> String
- Ny:
getAllVendorsIDs() -> [String]
14. Skaffa aktiverade leverantörer
- Old:
getEnabledVendors() -> String
- Ny:
getEnabledVendorsIDs() -> [String]
15. Markera syftessamtycke
- Old:
hasPurposeConsent(String) -> Bool
- Ny:
hasPurposeConsent(id: String) -> Bool
16. Markera leverantörens samtycke
- Old:
hasVendorConsent(String) -> Bool
- Ny:
hasVendorConsent(id: String) -> Bool
17. Exportera CMP-sträng
- Old:
exportCmpString() -> String
- Ny:
exportCMPInfo() -> String
18. Importera CMP-sträng
- Old:
importCmpString(String, completion: (Error?) -> Void)
- Ny:
importCMPInfo(String, completion: (Error?) -> Void)
19. Återställ samtyckesdata
- Old:
reset()
- Ny:
resetConsentManagementData(completion: (Error?) -> Void)
Föråldrade metoder:
consentRequestedToday() -> Bool
isConsentRequired() -> Bool
withCloseListener(() -> Void)
withOpenListener(() -> Void)
withErrorListener((CmpErrorType, String?) -> Void)
withOnCMPNotOpenedListener(() -> Void)
withOnCmpButtonClickedCallback((CmpButtonEvent) -> Void)
withCmpViewControllerConfigurationBlock((UIViewController?) -> Void)
withCmpViewConfigurationBlock((UIView) -> Void)
withUpdateGoogleConsent(([String: String]?) -> Void)
Notera: Den nya SDK:n använder en delad instans (CMPManager.shared
) och ett delegatmönster för återuppringningar. Genomföra CMPManagerDelegate
för att hantera evenemang.
Migrationsexempel
Snabb
// ============================================
// Previous versions
// ============================================
override func viewDidLoad({
super.viewDidLoad()
let vendoradded = NSNotification.Name.CmpConsentVendorAdded;
NotificationCenter.default.addObserver(self, selector: #selector(handleVendorAdded(notification:)), name: vendoradded, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(handleConsentUpdated(notification:)), name: Notification.Name.CmpConsentConsentChanged, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(handleVendorRemoved(notification:)), name: Notification.Name.CmpConsentVendorRemoved, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(handleConsentUpdated(notification:)), name: Notification.Name.CmpConsentChanged, object: nil)
setupCmpConfig();
private func setupCmpConfig() {
let cmpConfig : CmpConfig = CmpConfig.shared.setup(withId: "YOUR_CODE_ID_HERE, domain: myCmpConfig.domain, appName: myCmpConfig.appName, language: myCmpConfig.language);
cmpConfig.logLevel = CmpLogLevel.verbose;
cmpManager = CMPConsentTool(cmpConfig: cmpConfig)
.withErrorListener(onCMPError)
.withCloseListener(onClose)
.withOpenListener(onOpen)
.withOnCMPNotOpenedListener(onCMPNotOpened)
.withOnCmpButtonClickedCallback(onButtonClickedEvent)
.withCmpViewControllerConfigurationBlock { viewController in
viewController?.modalPresentationStyle = .popover
viewController?.modalTransitionStyle = .crossDissolve
}
.initialize()
}
// ============================================
// SDK v3 implementation
// ============================================
class DemoAppViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
let cmpManager = CMPManager.shared
cmpManager.setUrlConfig(UrlConfig(id: "YOUR_CODE_ID_HERE", domain: "delivery.consentmanager.net", language: "IT", appName: "CMDemoAppSwift"))
cmpManager.setWebViewConfig(ConsentLayerUIConfig(
position: .fullScreen,
backgroundStyle: .dimmed(.black, 0.5),
cornerRadius: 5,
respectsSafeArea: true,
allowsOrientationChanges: true
))
cmpManager.setPresentingViewController(self)
cmpManager.delegate = self
cmpManager.checkWithServerAndOpenIfNecessary() { result in
print("CMPManager initialized and open consent layer opened if necessary")
}
}
}
// MARK: - SDK delegates - callbacks
extension DemoAppViewController: CMPManagerDelegate {
func didChangeATTStatus(oldStatus: Int, newStatus: Int, lastUpdated: Date?) {
print("DemoApp received a change in the ATTStatus")
}
func didReceiveError(error: String) {
print("DemoApp received consent layer error: \(error)")
}
func didReceiveConsent(consent: String, jsonObject: [String : Any]) {
print("DemoApp received consent.")
}
func didShowConsentLayer() {
print("DemoApp displayed Consent Layer.")
}
func didCloseConsentLayer()
print("DemoApp received close consent message.")
let homeView = HomeView()
let hostingController = UIHostingController(rootView: homeView)
self.view.window?.rootViewController = hostingController
}
}
Objective-C
// ==========================================
// Objective-C v3 implementation
// ==========================================
- (void)initializeConsentManager {
CMPManager *cmpManager = [CMPManager shared];
[cmpManager setDelegate:self];
UrlConfig *urlConfig = [[UrlConfig alloc] initWithId:@"YOUR_CODE_ID_HERE"
domain:@"delivery.consentmanager.net"
language:@"EN"
appName:@"CMDemoAppObjC"];
[cmpManager setUrlConfig:urlConfig];
ConsentLayerUIConfig *uiConfig = [[ConsentLayerUIConfig alloc] initWithPosition:PositionFullScreen
backgroundStyle:BackgroundStyleDimmed
cornerRadius:5
respectsSafeArea:YES
allowsOrientationChanges:YES];
[cmpManager setWebViewConfig:uiConfig];
[cmpManager setPresentingViewController:self];
[cmpManager checkWithServerAndOpenIfNecessary:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Error initializing CMPManager: %@", error.localizedDescription);
} else {
NSLog(@"CMPManager initialized and open consent layer opened if necessary");
}
}];
}