Skip to main content

Getting Started


The Osano ConsentSDK for iOS is a native framework that integrates with the Consent Management Platform on the Osano Website. It is necessary to have an account, and a Cookie Consent configuration created and published in order for this SDK to be able to record end-user consents.

How do I use it?

ConsentManager

First, you must create an instance of the Osano object. This object contains the general configuration parameters that will be used throughout the life of the application.

import { Osano, OsanoContext } from '@osano/osano-cmp-react-native'

// ...

const
<Osano
customerId={customerId}
configId={configId}
hideDisclosures={hideDisclosures}
onConfigLoadSuccess={handleConfigLoadSuccess}
onConfigLoadFailure={handleConfigLoadFailure}
onLangLoadSuccess={handleLangLoadSuccess}
onLangLoadFailure={handleLangLoadFailure}
overrides={{
flavor: flavor ? flavor : undefined,
locale: locale ? locale : undefined,
palette: palette ? palette : undefined,
}}
extUsrData="unique_user_id"
>
<YourAppHere>
</Osano>

Note that the configId and customerId parameters are not optional, and must match the values of your configuration on the Osano website.

You can use the OsanoContext to access the ConsentManager object:

const {
clearConsent,
getConsent,
getDeviceId,
locale,
setLocale,
showBanner,
showDrawer,
} = React.useContext(OsanoContext)

UI Builder

Now that you have created an instance of the ConsentManager, you can use it to create and show consent messages in your application. There are two types of dialogues available to show in the SDK, and (depending on the geo-location of your end-user) the UI for each will look different. This is due to legal requirements that are in place for the end-user's geo-location. Rest assured, these UI differences are intentional and necessary to maintain legal compliance for the location of your users.

Display Modes

The UI may de shown in 2 different ways:

Dialog

The Dialog View Controller allows you to show a consent message and the required data storage preferences based on the country the device is in. The SDK takes care of figuring out which consent variant must be shown based on the device's locale.

To create the dialogue and show it, use the showDrawer method from the OsanoContext:

<Pressable onPress={showDrawer}>
<Text>Show Categories Dialog</Text>
</Pressable>
note

The dialog (depending on the end-user's geo-location) may have an automatic timeout, which will grant consent upon closure. This is normal functionality for specific global regions.

Declined to Consent

If a the completion callback notifies you that the end-user declined to consent, this does not mean they denied consent. It simply means that they did not make a selection.

The Drawer UI will not allow the user to dismiss the modal without making a selection, but the Dialog UI (in some geo-locations) will allow the user to dismiss the modal without making a selection. This is why it is important to check the categories array in the completion callback to determine if the user has actually declined to consent.

Drawer

The Drawer View Controller allows you to display all consent categories using a built-in UI. In this dialogue, the user can choose to enable or disable any of the consent categories. To user the view controller and show it, use the method showBanner

<Pressable onPress={showBanner}>
<Text>Show Concent Banner</Text>
</Pressable>

Using Custom Implementation

If the SDK's built-in UI and implementation does not fit your requirements, you can use the ConsentManager's APIs and integrate them to your own app's UI:

const consentManager = useRef<ConsentManager>(new ConsentManager());
const [_state, dispatch, getState, addMiddleware, removeMiddleware] =
useThunkReducer<OsanoState, OsanoAction>(
reducer,
{ configId, customerId },
init,
[],
);
return(
<OsanoPublicContext.Provider value={context}>
{<YourAppHere>}
<ConsentUiBuilder
addMiddleware={addMiddleware}
removeMiddleware={removeMiddleware}
dispatch={dispatch}
getState={getState}
cmp={consentManager}
hideDisclosures={hideDisclosures}
/>
</OsanoPublicContext.Provider>
)

To save (locally and remotely) new consent categories use:

recordConsent(consentManager.current, ConsentCategory.ESSENTIAL); //ESSENTIAL, ANALYTICS, MARKETING, PERSONALIZATION, OPT_OUT

To get the list of consented categories (local storage):

let consentedArray = consentManager.current.consent
let consentedString = consentedArray.join(", ")
console.log(consentedString)

To get whether the user has already gone through the consent process:

let userConsented = consentManager.current.consent.length > 0;