Skip to content

Consent Handling

You can check the current consent status:

SecurePrivacyMobileConsent.getConsentStatus('YOUR_APPLICATION_ID');
ConstantMeaning
PENDINGConsent needs to be collected.
COLLECTEDConsent has already been obtained.
RECOLLECTION_REQUIREDConsent needs to be re-collected.

When the SDK determines that consent needs to be recollected (for example, a consent update/re-consent flow), you can fetch the reason by calling:

const result = await SecurePrivacyMobileConsent.getConsentRecollectionReason('YOUR_APPLICATION_ID');
const reason = result.data;
if (reason) {
switch (reason) {
case SPConsentRecollectionReason.EXPIRED:
// Handle EXPIRED
break;
case SPConsentRecollectionReason.STRUCTURE_CHANGED:
// Handle STRUCTURE_CHANGED
break;
}
}

If no recollection reason is available, reason will be null.

ConstantMeaning
EXPIREDConsent has expired and needs to be re-collected.
STRUCTURE_CHANGEDPackages and services hash mismatch.

SDK constants are the authoritative representation for consent status and recollection reasons. The SDK guarantees the constants contract (what values are possible), but does not guarantee that the underlying wire/raw string values are stable over time (they are serialization details and may change).

Strongly prefer constants e.g. SPConsentStatus or SPConsentRecollectionReason in app logic.

  • Use constants in control flow: switch (status) { ... } or switch (reason) { ... }.
  • Avoid branching on raw keys such as "expired", "Collected", or "RecollectionRequired".
  • If you need your own string identifiers, define app-specific keys and create a custom mapping, for example:
const myReasonKey: string | null =
reason === SPConsentRecollectionReason.EXPIRED ? 'MY_EXPIRED'
: reason === SPConsentRecollectionReason.STRUCTURE_CHANGED ? 'MY_STRUCTURE_CHANGED'
: null;

This guidance applies to all constant fields returned from SDK APIs.

To check if a specific package has been marked as enabled by the user upon giving consent, you can call:

const pkgResult = await SecurePrivacyMobileConsent.getPackage('YOUR_APPLICATION_ID, 'react-native-package-example');
if (pkgResult.data?.enabled ?? false) {
// Enable features
}

This would return a SPDataMessage containing the SPMobilePackage only if the user has consented.

To launch the consent collection popup, use the following method:

SecurePrivacyMobileConsent.showConsentBanner();

This popup will inform users about the SDK and provides them with options to agree to all, deny to all or customise their consent preferences.

Additionally, you can call the following method to display the secondary consent banner:

SecurePrivacyMobileConsent.showSecondaryBanner()
React Native app consent banner.

The consent banner supports customization options and displays a “Customize” button that allows users to adjust their consent preferences. When they click the customization button, they will be directed to the Preference Center, where they can:

  • View a list of frameworks and their services.
  • Enable or disable consent for specific services.

To display the Preference Center directly, simply call:

SecurePrivacyMobileConsent.showPreferenceCenter('YOUR_APPLICATION_ID');

You can mark certain services as essential. These services will not be optional for the user to deny, ensuring compliance with the app’s required functionalities.

The Preferences screen also includes tabs showcasing content related to the app’s privacy and cookie policies. This ensures users have access to essential information regarding their data handling.

Users can submit a request for their data by filling out a form in the Request Data section. This feature helps manage user data requests in compliance with privacy regulations.