[iOS] Partnerzy zajmujący się przypisywaniem aplikacji innych firm (AAP)

Przegląd

Dla naszych klientów, którzy integrują nasz CMP SDK wraz z jednym z poniższych SDK innych firm, przygotowaliśmy ten dokument, w którym znajdziesz poszczególne przewodniki pokazujące, w jaki sposób zgody zebrane za pomocą naszego CMP SDK są przekazywane do tych SDK. Nasz CMP jest w pełni zgodny z TCF v2.2 i gromadzi dane dotyczące zgody DMA oraz przechowuje je w UserDefaults. Niektóre z poniższych SDK mogą pobierać te dane automatycznie, a inne wymagają wprowadzenia kodu. Prosimy o zapoznanie się z poszczególnymi przypadkami użycia poniżej.  

Ściśle przestrzegaj kolejności wywołań różnych SDK. Nasze SDK CMP musi uzyskać zgodę użytkowników przed wywołaniem jakiejkolwiek akcji w poniższych SDK stron trzecich.

W przypadku niektórych SDK od dostawców takich jak AppsFlyer, AdJust i Branch musisz albo (a) wywołać naszą updateThirdPartyConsent() , która automatycznie przekaże zebrane zgody do tych SDK poprzez introspekcję/refleksję, albo (b) użyć ich własnych metod i właściwości, aby zrobić to ręcznie. Jeśli korzystasz z naszego SDK CMP do automatycznego przekazywania danych dotyczących zgody, oto przykład implementacji: 

@main
class AppDelegate: UIResponder, UIApplicationDelegate, CMPManagerDelegate {
    
    var window: UIWindow?
    var cmpManager: CMPManager!
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Initialize your third-party SDK. Replace the code below by your respective third-party init code
        // according to the instructions along this document
        let yourClientToken = "YOUR-CLIENT-TOKEN"
        let yourThirdPartySdk = YourThirdPartySdk.shared()
        yourThirdPartySdk.initialize(withToken: yourClientToken)
        
        // Initializing our CMP SDK
        let urlConfig = UrlConfig(
            id: "YOUR_CODE_ID_HERE",
            domain: "delivery.consentmanager.net",
            language: "EN", 
            appName: "CMDemoAppSwift"
        )
        
        let webViewConfig = ConsentLayerUIConfig()
        
        cmpManager = CMPManager.shared
        cmpManager.delegate = self
        cmpManager.setUrlConfig(urlConfig)
        cmpManager.setWebViewConfig(webViewConfig)
        
        // Set the root view controller for consent UI presentation
        if let rootViewController = window?.rootViewController {
            cmpManager.setPresentingViewController(rootViewController)
        }
        
        // Here our CMP SDK will automatically display the consent layer if there is no consent
        // or the consent is expired. The didReceiveConsent() callback below will be triggered
        // once user consent is collected, which happens right after the users accepts/rejects
        // and all IAB TCF data is persisted to the UserDefaults area
        checkAndOpenConsent()
        
        return true
    }
    
    func checkAndOpenConsent() {
        cmpManager.checkAndOpen { error in
            if let error = error {
                print("Error checking consent: (error.localizedDescription)")
            }
        }
    }
    
    // MARK: - CMPManagerDelegate Methods
    
    func didReceiveConsent(consent: String, jsonObject: [String: Any]) {
        print("CMP DemoApp: Consent Layer successfully received consent message.")
        // Here we'll automatically handle the passing of the consent from our
        // CMP SDK to the 3P SDK
        let results = cmpManager.updateThirdPartyConsent()
        print("Third-party consent update results: (results)")
    }
}

Aby uzyskać więcej informacji, przejdź do odpowiednich instrukcji stron trzecich poniżej.

AppsFlyer

Ten SDK wyszukuje ciąg TCF zapisany w UserDefaults obszarze urządzenia, zapewniając automatyczny przepływ zgód zebranych na urządzeniu za pośrednictwem naszego SDK CMP do zdarzeń AppsFlyer. Aby przekazać dane dotyczące zgody do AppsFlyer, postępuj zgodnie z poniższymi instrukcjami:

  • Zainicjuj SDK AppsFlyer i włącz gromadzenie danych TCF. W kodzie przedstawionym w sekcji Przegląd niniejszego dokumentu zastąp część dotyczącą inicjalizacji podmiotów zewnętrznych następującym fragmentem:
	AppsFlyerLib.shared().waitForATTUserAuthorization(timeoutInterval: 60)
    AppsFlyerLib.shared().enableTCFDataCollection(true)
  1. Zainicjuj nasze SDK CMP
  2. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy w bieżącej sesji potrzebujesz okna dialogowego dotyczącego zgody.
  3. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy też dostosowanie opcji.
  4. Uzyskaj potwierdzenie od dostawcy CMP, że użytkownik wyraził zgodę, a dane są dostępne UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W przykładzie w przeglądzie używamy didReceiveConsent() wywołania zwrotnego 
  5. Ostatni krok można wykonać na dwa sposoby: (a) możesz skorzystać z naszego fragmentu kodu z przeglądu lub (b) możesz zastąpić go metodą AppFlyer start() . W tym drugim przypadku zastąp wiersz wewnątrz naszego didReceiveMessage callback na poniższy wiersz: 
	AppsFlyerLib.shared().start()

AdJust

Ten SDK nie pobiera danych dotyczących zgody przechowywanych w UserDefaults obszarze urządzenia, więc masz dwa sposoby na osiągnięcie tego celu: (a) automatyczny, który będzie w całości obsługiwany przez nasz SDK CMP; oraz (b) ręczny, w którym wykorzystasz funkcje obu SDK, aby to osiągnąć. Postępuj zgodnie z poniższymi instrukcjami: 

  1. Zainicjuj SDK AdJust 
  2. Zainicjuj nasze SDK CMP
  3. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy potrzebujesz okna dialogowego o zgodzie w bieżącej sesji.
  4. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy też dostosowanie opcji.
  5. Uzyskaj potwierdzenie od dostawcy CMP, że użytkownik wyraził zgodę, a dane są dostępne w UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W poniższym przykładzie używamy didReceiveConsent() callback 
  6. Na koniec możesz albo (a) wywołać updateThirdPartyConsent() z naszego CMP SDK, co automatycznie przekaże dane do SDK AdJust poprzez introspekcję/refleksję, albo zastąpić go poniższym kodem: 
func didReceiveConsent(consent: String, jsonObject: [String: Any]) {
    print("CMP DemoApp: Consent Layer successfully received consent message.")
    // Retrieve Google Consent Mode data...
    let consentData = cmpManager.getGoogleConsentModeStatus()
    // ... and parse it to pass to Adjust SDK
    let adStorageConsent = consentData["ad_storage"] == "granted" ? "1" : "0"
    let adPersonalizationConsent = consentData["ad_personalization"] == "granted" ? "1" : "0"
    let adjustThirdPartySharing = ADJThirdPartySharing(isEnabled: true)
    adjustThirdPartySharing?.addGranularOption("google_dma", key: "eea", value: "1")
    adjustThirdPartySharing?.addGranularOption("google_dma", key: "ad_personalization", value: adPersonalizationConsent)
    adjustThirdPartySharing?.addGranularOption("google_dma", key: "ad_user_data", value: adStorageConsent)
    Adjust.trackThirdPartySharing(adjustThirdPartySharing)
}

Oddział

Ten SDK nie pobiera danych dotyczących zgody przechowywanych w UserDefaults obszarze urządzenia, więc masz dwie możliwości osiągnięcia tego celu: (a) automatyczną, którą w całości obsłuży nasz CMP SDK; oraz (b) ręczną, w której wykorzystasz funkcje obu SDK, aby to osiągnąć. 

  1. Zainicjuj gałąź przy użyciu tokenu aplikacji
  2. Zainicjuj nasze SDK CMP
  3. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy w bieżącej sesji potrzebujesz okna dialogowego dotyczącego zgody.
  4. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy też dostosowanie opcji.
  5. Uzyskaj potwierdzenie od CMP, że użytkownik wyraził zgodę, a dane są dostępne w UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W poniższym przykładzie używamy didReceiveConsent() callback 
  6. Na koniec możesz albo (a) wywołać updateThirdPartyConsent() z naszego CMP SDK, co automatycznie przekaże dane do SDK AdJust poprzez introspekcję/refleksję, albo zastąpić go poniższym kodem: 
      override fun didReceiveConsent(consent: String, jsonObject: Map<String, Any>) {
        Log.d("CMP DemoApp", "Consent Layer successfully received consent message.")
        // Retrieve Google Consent Mode data...
        val consentData = cmpManager.getGoogleConsentModeStatus();

		// ... and parse it to pass to AdJust SDK
		val adStorageConsent = consentSettings["ad_storage"] == "granted"
        val adPersonalizationConsent = consentSettings["ad_personalization"] == "granted" 

        // Example for an EEA resident
        Branch.getInstance().setDMAParamsForEEA(true,adPersonalizationConsent,adStorageConsent)

        // Example for an non-EEA resident
        Branch.getInstance().setDMAParamsForEEA(false,adPersonalizationConsent,adStorageConsent)
          
        // For further information, check:
        // https://help.branch.io/developers-hub/docs/ios-advanced-features#user-data
}

 

Kochava

Ten SDK wyszukuje ciąg TCF przechowywany w UserDefaults obszarze urządzenia, zapewniając automatyczny przepływ zgód zebranych na urządzeniu za pośrednictwem naszego SDK CMP do zdarzeń AppsFlyer. Aby przekazać dane dotyczące zgody do AppsFlyer, postępuj zgodnie z poniższymi instrukcjami:

  1. Zainicjuj SDK Kochava 
  2. Zainicjuj nasze SDK CMP
  3. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy w bieżącej sesji potrzebujesz okna dialogowego dotyczącego zgody.
  4. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy też dostosowanie opcji.
  5. Uzyskaj potwierdzenie od dostawcy CMP, że użytkownik wyraził zgodę, a dane są dostępne UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W przykładzie w przeglądzie używamy didReceiveConsent() wywołania zwrotnego 
  6. Ostatni krok można wykonać na dwa sposoby: (a) możesz skorzystać z naszego fragmentu kodu z przeglądu lub (b) możesz zastąpić go metodą Kochava startWithAppGuid() . W tym drugim przypadku zastąp wiersz wewnątrz naszego didReceiveMessage callback na poniższy wiersz: 
	Tracker.getInstance().startWithAppGuid(applicationContext, "YOUR_ANDROID_APP_GUID")	

Liczba pojedyncza

Ten SDK wyszukuje ciąg TCF zapisany w UserDefaults obszarze urządzenia, zapewniając automatyczny przepływ zgód zebranych na urządzeniu za pośrednictwem naszego SDK CMP do zdarzeń AppsFlyer. Aby przekazać dane dotyczące zgody do AppsFlyer, postępuj zgodnie z poniższymi instrukcjami:

  1. Zainicjuj SDK Singular 
  2. Zainicjuj nasze SDK CMP
  3. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy w bieżącej sesji potrzebujesz okna dialogowego dotyczącego zgody.
  4. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy też dostosowanie opcji.
  5. Uzyskaj potwierdzenie od dostawcy CMP, że użytkownik wyraził zgodę, a dane są dostępne UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W przykładzie w przeglądzie używamy didReceiveConsent() wywołania zwrotnego. 
  6. Ostatni krok można wykonać na dwa sposoby: (a) możesz skorzystać z naszego fragmentu kodu z przeglądu lub (b) możesz go zastąpić metodą Singular trackingOptIn() . W tym drugim przypadku zastąp linię wewnątrz naszego didReceiveMessage wywołania zwrotnego poniższą linią: 
	Singular.trackingOptIn();

AirBridge

Ten SDK wyszukuje ciąg TCF przechowywany w UserDefaults obszarze urządzenia, zapewniając automatyczny przepływ zgód zebranych na urządzeniu za pośrednictwem naszego SDK CMP do zdarzeń AppsFlyer. Aby przekazać dane dotyczące zgody do AppsFlyer, postępuj zgodnie z poniższymi instrukcjami:

  1. Zainicjuj SDK AirBridge 
  2. Zainicjuj nasze SDK CMP
  3. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy w bieżącej sesji potrzebujesz okna dialogowego dotyczącego zgody.
  4. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy też dostosowanie opcji.
  5. Uzyskaj potwierdzenie od dostawcy CMP, że użytkownik wyraził zgodę, a dane są dostępne UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W przykładzie w przeglądzie używamy didReceiveConsent() wywołania zwrotnego 
  6. Ostatni krok można wykonać na dwa sposoby: (a) możesz skorzystać z naszego fragmentu kodu z przeglądu lub (b) możesz zastąpić go metodą AirBridge startTracking() . W tym drugim przypadku zastąp wiersz wewnątrz naszego didReceiveMessage callback na poniższy wiersz: 
	Airbridge.startTracking()

Tenjin

Ten SDK wyszukuje ciąg TCF zapisany w UserDefaults obszarze urządzenia, zapewniając automatyczny przepływ zgód zebranych na urządzeniu za pośrednictwem naszego SDK CMP do zdarzeń AppsFlyer. Aby przekazać dane dotyczące zgody do AppsFlyer, postępuj zgodnie z poniższymi instrukcjami:

  1. Zainicjuj SDK Tenjin 
  2. Zainicjuj nasze SDK CMP
  3. Skorzystaj z naszego CMP SDK, aby automatycznie zdecydować, czy w bieżącej sesji potrzebujesz okna dialogowego dotyczącego zgody.
  4. W razie potrzeby wyświetli się okno dialogowe zgody, aby zarejestrować wybory użytkownika, czy to akceptację wszystkich, odrzucenie wszystkich, czy dostosowanie opcji.
  5. Uzyskaj potwierdzenie od dostawcy CMP, że użytkownik wyraził zgodę, a dane są dostępne UserDefaults. Istnieją różne sposoby, aby to zrobić za pomocą naszego SDK CMP. W przykładzie w przeglądzie używamy didReceiveConsent() wywołania zwrotnego 
  6. Ostatni krok można wykonać na dwa sposoby: (a) możesz skorzystać z naszego fragmentu kodu z przeglądu lub (b) możesz go zastąpić metodami Tenjin optIn()/optOut() .

 

We do our best to keep this purely informative documentation up to date. However, if you notice that any of these guides need a little touch-up, let us know!