Info
Contenu

[iOS] 2. Documentation API

Le CMPManager La classe fournit des méthodes pour gérer le consentement de l'utilisateur pour le traitement et le suivi des données. Cette documentation couvre les principales méthodes disponibles pour l'intégration d'applications mobiles.

Initialisation

setUrlConfig(:UrlConfig)

Définit la configuration de l'URL pour le Consent Manager.

Paramètres:

  • config: Un UrlConfig objet contenant les propriétés suivantes :
    • id: String - L'ID CMP
    • domain: String - Le domaine de gestion du consentement
    • language:Chaîne - Le code de langue (par exemple, « EN »)
    • appName: String - Le nom de votre application

Retours: vide

Mise en situation :

CMPManager.shared.setUrlConfig(UrlConfig(
    id: "0a000000000a1",
    domain: "delivery.consentmanager.net",
    language: "EN",
    appName: "MyApp"
))

setWebViewConfig(_ :ConsentLayerUIConfig)

Configure l'apparence et le comportement de la WebView de consentement. Vous pouvez définir la position où l'objet WKWebiew affichant la couche de consentement apparaîtra, comme en plein écran, sur la moitié inférieure de l'écran ou sur sa moitié supérieure. De plus, le style d'arrière-plan peut être appliqué, ainsi que le rayon des coins, s'il respectera la zone de sécurité de l'appareil, ainsi que s'il répondra ou non aux changements d'orientation, au cas où votre mobile ne fonctionnerait que dans une seule orientation, ce qui se produit généralement avec les jeux qui n'utilisent que la configuration horizontale de l'écran de l'appareil.   

Paramètres:

  • config: Un ConsentLayerUIConfig objet avec les propriétés suivantes :
    • position: Position - La position de la vue Web (par exemple, .fullScreen)
    • backgroundStyle: BackgroundStyle - Le style d'arrière-plan (par exemple, .dimmed)
    • cornerRadius: CGFloat - Le rayon d'angle de la WebView
    • respectsSafeArea: Bool - S'il faut respecter la zone de sécurité
    • allowsOrientationChanges: Bool - S'il faut autoriser les changements d'orientation

Retours: vide

Mise en situation :

CMPManager.shared.setWebViewConfig(ConsentLayerUIConfig(
    position: .fullScreen,
    backgroundStyle: .dimmed(.black, 0.5),
    cornerRadius: 10,
    respectsSafeArea: true,
    allowsOrientationChanges: true
))

setPresentingViewController(_ :viewController)

Définit le contrôleur de vue qui présentera la couche de consentement. En général, vous passez self en tant que contrôleur de vue actuel. 

Paramètres:

  • viewController: UIViewController - Le contrôleur de vue pour présenter la couche de consentement

Retours: vide

Mise en situation :

CMPManager.shared.setPresentingViewController(self)

checkIfConsentIsRequired(:achèvement)

Paramètres:

  • completion: (Bool) -> Void - Une fermeture appelée avec le résultat, soit true or false.

Retours: Voix

Mise en situation :

CMPManager.shared.checkIfConsentIsRequired { required in
    print("Consent is required: \(required)")
}

checkWithServerAndOpenIfNecessary(:achèvement)

Vérifie auprès du serveur si le consentement est requis et ouvre la couche de consentement si nécessaire. Cela effectuera un appel réseau vers nos serveurs via le WKWebView créé dans notre SDK, consommer une page vue dans le processus. Cet appel réseau enverra un message à notre backend via JavaScript, qui détectera si l'appareil a un consentement valide ou non, ce qui déterminera à son tour si la couche de consentement doit être affichée ou non.  

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée.

Retours: vide

Mise en situation :

CMPManager.shared.checkWithServerAndOpenIfNecessary { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Check completed successfully")
    }
}

jumpToSettings(:achèvement)

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.jumpToSettings { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Jumped to settings successfully")
    }
}

openConsentLayer(:achèvement)

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée, renvoyant soit un succès, soit une erreur. 

Retours: vide

Pages vues consommées : 1

Mise en situation :

CMPManager.shared.openConsentLayer { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Consent layer opened successfully")
    }
}

exportCMPInfo()

Exporte les informations de consentement actuelles stockées sur l'appareil sous forme de chaîne. Cette méthode récupère la chaîne de consentement de la zone UserDefaults de l'appareil et la renvoie. Généralement, ces informations sont transmises à importCMPInfo méthode.

Retours: Chaîne - Les informations de consentement exportées

Mise en situation :

let cmpInfo = CMPManager.shared.exportCMPInfo()
print("Exported CMP info: \(cmpInfo)")

a pour objet le consentement (id :)

Attention: Vérifiez toujours d'abord hasUserChoice() ! Dans les cas où aucun choix n'existe, la fonction peut renvoyer des valeurs de retour inattendues.

Paramètres:

  • id: String - L'ID de l'objectif à vérifier

Retours: Bool - True si le consentement est donné, false autrement

Mise en situation :

let hasPurposeConsent = CMPManager.shared.hasPurposeConsent(id: "c53")
print("Has consent for purpose c53: \(hasPurposeConsent)")

aUserChoice()

Vérifie si l'utilisateur a fait un choix concernant les consentements et si ce consentement est stocké sur l'appareil. Cela signifie que l'utilisateur a accepté tous les consentements, les a tous rejetés ou a fait un choix mixte de consentements rejetés et acceptés, en fonction de la conception de la CMP, ce qui peut permettre aux utilisateurs d'autoriser certains consentements et d'en rejeter d'autres. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: Bool - true si l'utilisateur a fait un choix, false autrement

Mise en situation :

let hasChoice = CMPManager.shared.hasUserChoice()
print("User has made a choice: \(hasChoice)")

hasVendorConsent(:Chaîne)

Paramètres:

  • id: String - L'ID du fournisseur à vérifier

Retours: Bool - True si le consentement est donné, false autrement

Mise en situation :

let hasVendorConsent = CMPManager.shared.hasVendorConsent(id: "s2789")
print("Has consent for vendor s2789: \(hasVendorConsent)")

Objectif et gestion des fournisseurs

getAllPurposesIDs()

Récupère tous les identifiants d'objectif stockés sur l'appareil, selon les configurations CMP. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: [Chaîne] - Un tableau d'identifiants à usage général

Mise en situation :

let allPurposes = CMPManager.shared.getAllPurposesIDs()
print("All purposes: \(allPurposes)")

getAllVendorsIDs()

Récupère tous les identifiants de fournisseurs stockés sur l'appareil, selon les configurations CMP. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: [Chaîne] - Un tableau de tous les identifiants de fournisseurs

Mise en situation :

let allVendors = CMPManager.shared.getAllVendorsIDs()
print("All vendors: \(allVendors)")

getDisabledPurposesIDs()

Récupère les identifiants de toutes les finalités désactivées stockées sur l'appareil, en fonction des configurations CMP et des choix de l'utilisateur. Si l'utilisateur accepte tous les consentements, ce champ sera vide.  Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: [Chaîne] - Un tableau d'identifiants d'objectifs désactivés

Mise en situation :

let disabledPurposes = CMPManager.shared.getDisabledPurposesIDs()
print("Disabled purposes: \(disabledPurposes)")

getDisabledVendorsIDs()

Récupère les identifiants de tous les fournisseurs désactivés stockés sur l'appareil, selon les configurations CMP. Si l'utilisateur accepte tous les consentements, ce champ sera vide. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: [Chaîne] - Un tableau d'identifiants de fournisseurs désactivés

Mise en situation :

let disabledVendors = CMPManager.shared.getDisabledVendorsIDs()
print("Disabled vendors: \(disabledVendors)")

getEnabledPurposesIDs()

Récupère les identifiants de tous les objectifs activés stockés sur l'appareil, selon les configurations CMP. Si l'utilisateur rejette tous les consentements, ce champ sera vide. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: [Chaîne] - Un tableau d'ID d'objectif activés

Mise en situation :

let enabledPurposes = CMPManager.shared.getEnabledPurposesIDs()
print("Enabled purposes: \(enabledPurposes)")

getEnabledVendorsIDs()

Récupère les identifiants de tous les fournisseurs activés stockés sur l'appareil. Si l'utilisateur rejette tous les consentements, ce champ sera vide. Ces informations ne seront mises à jour qu'une fois le consentement correctement conservé dans la zone UserDefaults, donc si vous vérifiez juste après avoir utilisé des méthodes qui déclenchent des modifications dans le consentement comme openConsentLayer, acceptAll or rejectAll, par exemple, alors attendez que le rappel de ces méthodes soit déclenché avant d'accéder à la méthode hasUserChoice, pour s'assurer que les informations sont à jour.

Retours: [Chaîne] - Un tableau d'identifiants de fournisseurs activés

Mise en situation :

let enabledVendors = CMPManager.shared.getEnabledVendorsIDs()
print("Enabled vendors: \(enabledVendors)")

accepterTout(:achèvement)

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.acceptAll { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("All consents accepted successfully")
    }
}

acceptPurposes(:purposes:updatePurpose:achèvement)

Paramètres:

  • purposes: [Chaîne] - Un tableau d'identifiants d'objectif à accepter
  • updatePurpose: Bool - S'il faut mettre à jour les objectifs associés
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.acceptPurposes(["c52", "c53"], updatePurpose: true) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Purposes accepted successfully")
    }
}

acceptVendors(:fournisseurs:achèvement)

Paramètres:

  • vendors: [Chaîne] - Un tableau d'identifiants de fournisseurs à accepter
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.acceptVendors(["s2790", "s2791"]) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Vendors accepted successfully")
    }
}

importCMPInfo(:Chaîne:achèvement)

Paramètres:

  • cmpString: String - La chaîne CMP à importer
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

let cmpString = "Q1FERkg3QVFERkg3QUFmR01CSVRCQkVnQUFBQUFBQUFBQWlnQUFBQUFBQUEjXzUxXzUyXzUzXzU0XzU1XzU2XyNfczI3ODlfczI3OTBfczI3OTFfczI2OTdfczk3MV9VXyMxLS0tIw"
CMPManager.shared.importCMPInfo(cmpString) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("CMP info imported successfully")
    }
}

rejeterTout(:achèvement)

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.rejectAll { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("All consents rejected successfully")
    }
}

rejectPurposes(:purposes:updateVendor:completion)

Paramètres:

  • purposes: [Chaîne] - Un tableau d'identifiants d'objectifs à rejeter
  • updateVendor: Bool - S'il faut mettre à jour les fournisseurs associés
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.rejectPurposes(["c52", "c53"], updateVendor: true) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Purposes rejected successfully")
    }
}

rejectVendors(:fournisseurs:achèvement)

Paramètres:

  • vendors: [Chaîne] - Un tableau d'identifiants de fournisseurs à rejeter
  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.rejectVendors(["s2790", "s2791"]) { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Vendors rejected successfully")
    }
}

 

resetConsentManagementData(achèvement :)

Paramètres:

  • completion:Une fermeture appelée lorsque l'opération est terminée

Retours: vide

Mise en situation :

CMPManager.shared.resetConsentManagementData { error in
    if let error = error {
        print("Error: \(error.localizedDescription)")
    } else {
        print("Consent management data reset successfully")
    }
}

Transparence du suivi des applications (ATT)

requestATTAuthorization(achèvement :)

Demande l'autorisation App Tracking Transparence auprès de l'utilisateur. Pour plus d'informations, veuillez consulter le documentation officielle d'Apple

Paramètres:

  • completion: (ATTAuthorizationStatus) -> Void - Une fermeture appelée avec le statut d'autorisation résultant

Retours: vide

Disponibilité: iOS 14.0 +

Mise en situation :

if #available(iOS 14, *) {
    CMPManager.shared.requestATTAuthorization { status in
        switch status {
        case .authorized:
            print("ATT: User authorized tracking")
        case .denied:
            print("ATT: User denied tracking")
        case .restricted:
            print("ATT: Tracking is restricted")
        case .notDetermined:
            print("ATT: Status not determined")
        @unknown default:
            print("ATT: Unknown status")
        }
    }
} else {
    print("ATT is not available on this device")
}

getATTAuthorizationStatus()

Obtient l'état actuel de l'autorisation App Tracking Transparency. Pour plus d'informations, veuillez consulter le documentation officielle d'Apple.

Retours: ATTAuthorizationStatus - L'état d'autorisation actuel

Disponibilité: iOS 14.0 +

Mise en situation :

if #available(iOS 14, *) {
    let status = CMPManager.shared.getATTAuthorizationStatus()
    print("Current ATT status: \(status)")
} else {
    print("ATT is not available on this device")
}

Événements CMPManagerDelegate

didReceiveConsent(consentement : String, jsonObject : [String : Any])

Cela se déclenche lorsque la couche de consentement a été fermée après que l'utilisateur a mis à jour ses consentements OU lors de l'appel de méthodes qui provoquent des modifications dans les consentements, comme acceptAll, rejectAll, acceptVendors, rejectVendors, etc. Cela signifie que l'utilisateur a accepté ou rejeté certains des consentements, et que ceux-ci ont été correctement enregistrés dans l'appareil.

didShowConsentLayer

Cela se déclenche lorsque la couche de consentement a été effectivement affichée. Cela signifie qu'aucun consentement n'était valide sur l'appareil, il faut donc en collecter un nouveau.

a fermé la couche de consentement


Cela se produit lorsque le SDK a vérifié la nécessité d'un consentement, mais que celui-ci n'était pas nécessaire et que la couche n'était pas affichée. Cela signifie qu'il existe déjà une couche valide dans l'appareil, donc une nouvelle couche n'est pas nécessaire et la couche de consentement ne s'affichera pas.

Erreur de réception

Cela se déclenche lorsque le SDK rencontre une erreur et renvoie son code.

 

Retour en haut de la page