Developer Platform
Search
βŒƒK

Beaufort

βš™οΈ Prerequisites

There are a few steps required before you start integrating the iAdvize Messenger SDK.

πŸ’¬ Setting up your iAdvize environment

Before integrating the SDK, you need to check that your iAdvize environment is ready to use (i.e. you have an account ready to receive and answer to conversations from the SDK). You will also need some information related to the project for the SDK setup. Please ask your iAdvize administrator to follow the instructions available on the SDK Knowledge Base and to provide you with the Project Identifier as well as a Targeting Rule Identifier.
Your iAdvize administrator should already have configured the project on the iAdvize Administration Desk and created an operator account for you. If it is not yet the case please contact your iAdvize Technical Project Manager.

πŸ’» Connecting to your iAdvize Operator Desk

Using your operator account please log into the iAdvize Desk.
If you have the Administrator status in addition to your operator account, you will be directed to the Admin Desk when logging in. Just click on the Chat button in the upper right corner to open the Operator Desk.
The iAdvize operator desk is the place where the conversations that are assigned to your account will pop up. Please ensure that your status is β€œAvailable" by enabling the corresponding chat or video toggle buttons in the upper right corner:
The chat button is green, your operator can receive incoming conversations.
If the toggle button is yellow, it means you have reached your maximum simultaneous chat slots, please end your current conversations to free a chat slot and allow the conversations to be assigned to you. If the toggle is red you are not available to chat.

πŸ” Ensuring the SDK integrity

Before downloading the iAdvize Messenger SDK artifacts you can verify their integrity by generating their checksums and comparing them with the reference checksums available.
Android
iOS
React Native
Flutter
Reference checksums are available:
The Android SDK consists of an archive (aar file) and a Maven project description (pom file), you can generate their checksums using the following commands (replace x.y.z by the SDK version you are checking):
curl -sL https://github.com/iadvize/iadvize-android-sdk/raw/master/com/iadvize/iadvize-sdk/x.y.z/iadvize-sdk-x.y.z.aar | openssl sha256
​
curl -sL https://github.com/iadvize/iadvize-android-sdk/raw/master/com/iadvize/iadvize-sdk/x.y.z/iadvize-sdk-x.y.z.pom | openssl sha256
This ensures that the online packages are valid. In order to check those checksums on the fly, this process can be automated via Gradle by adding a metadata verification xml file at $PROJECT_ROOT/gradle/verification-metadata.xml:
<?xml version="1.0" encoding="UTF-8"?>
<verification-metadata ...>
<configuration>
<verify-metadata>true</verify-metadata>
<verify-signatures>false</verify-signatures>
</configuration>
<components>
<component group="com.iadvize" name="iadvize-sdk" version="x.y.z">
<artifact name="iadvize-sdk-2.8.2.aar">
<sha256 value="checksum value" origin="iAdvize website" />
</artifact>
<artifact name="iadvize-sdk-x.y.z.pom">
<sha256 value="checksum value "origin="iAdvize website" />
</artifact>
</component>
</components>
</verification-metadata>
With this file present in your project structure, Gradle will automatically check the artifacts checksums before integrating them into your app. Please note that you will have to do this for all dependencies used in your project. To help you with that, verification-metadata.xml for the SDK sub-dependencies is delivered alongside the SDK. Those subdependencies checksums have been generated through the Gradle generation feature and not verified.
Reference checksums are available:

Swift Package Manager integration

The iOS SDK only consists of an archive (zip file). You can generate its checksums using the following command (replace x.y.z by the SDK version you are checking):
curl -sL https://github.com/iadvize/iadvize-ios-sdk/releases/download/x.y.z/IAdvizeSDK.zip | openssl sha3-256
SPM will also automatically verify that the checksum of the artifact it downloads correspond to the one described in the Package.swift available in the public repository (it's a SHA2-256 checksum).

CocoaPods integration

The iOS SDK consists of an archive (zip file) and a Cocoapods project description file (podspec file). You can generate their checksums using the following commands (replace x.y.z by the SDK version you are checking):
curl -sL https://github.com/iadvize/iadvize-ios-sdk/releases/download/x.y.z/IAdvizeSDK.zip | openssl sha3-256
​
curl -sL https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/d/0/0/iAdvize/x.y.z/iAdvize.podspec.json | openssl sha3-256
After downloading the SDK through CocoaPods, additional verifications can be made, first by comparing the podspec checksum at the end of the generated Podfile.lock with the SHA1 podspec reference checksum.
SPEC CHECKSUMS:
iAdvize: podspec-sha1-checksum
The downloaded framework integrity can also be checked by generating the local pod files checksums and comparing them with the online reference ones:
cd Pods/iAdvize
find IAdvizeConversationSDK.xcframework -type f -exec openssl sha3-256 {} \; >> IAdvizeSDK-local.checksums
Our React Native SDK plugin is hosted on an external platform called Node Package Manager (NPM) that already has internal checksum validation strategies in order to ensure that the downloaded plugin code (the wrapper code) is untampered.
Our Flutter SDK plugin is hosted on an external platform called pub.dev, that already has internal checksum validation strategies in order to ensure that the downloaded plugin code (the wrapper code) is untampered.

βš™οΈ Setting up the SDK

1️⃣ Setting up the SDK into your project configuration

First of all, to be able to use the SDK you need to add the SDK dependency into your project. Some configuration steps will also be needed in order to use it.
Android
iOS
React Native
Flutter
Add the iAdvize repository to your project repositories inside your top-level Gradle build file:
// Project-level build.gradle.kts
​
allprojects {
repositories {
maven(url = uri("https://raw.github.com/iadvize/iadvize-android-sdk/master"))
maven(url = uri("https://jitpack.io"))
}
}
Add the iAdvize Messenger SDK dependency inside your module-level Gradle build file (replace x.y.z by the latest SDK version available):
// Module-level build.gradle.kts
​
configurations {
all {
exclude(group = "xpp3", module = "xpp3")
}
}
​
dependencies {
implementation("com.iadvize:iadvize-sdk:x.y.z")
}
The exclude configuration is required because the iAdvize Messenger SDK uses Smack, an XMPP library that is built upon xpp3, which is bundled by default in the Android framework. This exclude ensures that your app does not also bundle xpp3 to avoid classes duplication errors.
In that same file, you also need to ensure that you are using the right Android target to build (iAdvize Messenger SDK is built with Android target 33):
// Module-level build.gradle.kts
​
android {
buildToolsVersion "33.0.1"
​
defaultConfig {
minSdk = 21
targetSdk = 33
compileSdk = 33
}
}
iAdvize Messenger SDK requires a minSdkVersion >= 21.
After syncing your project you should be able to import the iAdvize dependency in your application code with import com.iadvize.conversation.sdk.IAdvizeSDK
You will then need to provide a reference to your application object and initialize the SDK with it.
In your AndroidManifest.xml declare your application class:
<application android:name="my.app.package.App">
<!-- your activities etc... -->
</application>
This class should then initialize the SDK:
package my.app.package.App
​
class App : Application() {
override fun onCreate() {
super.onCreate()
IAdvizeSDK.initiate(this)
}
}
⌨️ In-context example:
The SDK supports video conversations using a third-party native (C++) binaries. If you are delivering your app using an APK you will note a size increase as the default behavior of the build system is to include the binaries for each ABI in a single APK. We strongly recommended that you take advantage of either App Bundles or APK Splits to reduce the size of your APKs while still maintaining maximum device compatibility.
SPM
CocoaPods
From Xcode go to File > Add Packages, then paste the iAdvize Messenger SDK URL https://github.com/iadvize/iadvize-ios-sdk in the top-right search bar. Select the versioning strategy fitting your app then click on Add Package.
You should then be able to import the iAdvize dependency in your application code using import IAdvizeConversationSDK
⌨️ In-context example: Import​
Add this line to your Podfile, inside the target section (replace x.y.z by the latest SDK version available, and choose the versioning strategy fitting your app):
platform :ios, '13.0'
​
target 'YOUR_TARGET' do
project 'YOUR_PROJECT'
pod 'iAdvize', 'x.y.z'
end
iAdvize Messenger SDK requires a minimum iOS platform of 13.0.
After running pod install you should be able to import the iAdvize dependency in your application code with import IAdvizeConversationSDK
⌨️ In-context example:
The SDK supports video conversations. Thus it will request camera and microphone access before entering a video call. To avoid the app to crash, you have to setup two keys in your app Info.plist
<key>NSCameraUsageDescription</key>
<string>This application will use the camera to share photos and during video calls.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This application will use the microphone during video calls.</string>
Download the library from NPM using the following command:
npm install @iadvize-oss/iadvize-react-native-sdk
Alternatively, you can use Yarn:
yarn add @iadvize-oss/iadvize-react-native-sdk
The SDK API is then available via the following import:
import IAdvizeSDK from '@iadvize-oss/iadvize-react-native-sdk';
Android setup
iOS setup
In your android/build.gradle file, and add the iAdvize SDK repository. You also need to ensure that you are using the right Android framework to build (iAdvize Messenger SDK is built with Android target 33):
// android/build.gradle
​
buildscript {
ext {
buildToolsVersion = "33.0.1"
minSdkVersion = 21
compileSdkVersion = 33
targetSdkVersion = 33
}
}
​
allprojects {
repositories {
maven { url "https://raw.github.com/iadvize/iadvize-android-sdk/master" }
maven { url "https://jitpack.io" }
}
}
iAdvize Messenger SDK requires a minSdkVersion >= 21.
On Android, the iAdvize Messenger SDK needs to be initialized before use to allow several functionalities to work. For instance, the default floating button use an ActivityLifecycleController that must be started before the main ReactNative activity is created, otherwise the controller won't be able to trigger the button display. Thus you need to add those lines in the android/app/src/main/java/yourpackage/MainApplication.java to initialize the SDK properly:
// android/app/src/main/java/yourpackage/MainApplication.java
​
import com.iadvize.conversation.sdk.IAdvizeSDK;
​
public class MainApplication extends Application implements ReactApplication {
@Override
public void onCreate() {
super.onCreate();
IAdvizeSDK.initiate(this);
}
}
Add this line to your Podfile, inside the target section (replace x.y.z by the latest SDK version available, and choose the versioning strategy fitting your app):
platform :ios, '13.0'
​
target 'YOUR_TARGET' do
project 'YOUR_PROJECT'
pod 'iAdvize', 'x.y.z'
end
iAdvize Messenger SDK requires a minimum iOS platform of 13.0.
Once this is done, make sure to go to ios folder and install CocoaPods dependencies:
cd ios && pod install --repo-update
The SDK supports video conversations. Thus it will request camera and microphone access before entering a video call. To avoid the app to crash, you have to setup two keys in your app Info.plist
<key>NSCameraUsageDescription</key>
<string>This application will use the camera to share photos and during video calls.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This application will use the microphone during video calls.</string>
Download the library from pub.dev using the following command:
flutter pub add iadvize_flutter_sdk
The SDK API is then available via the following import:
import 'package:iadvize_flutter_sdk/iadvize_sdk.dart';
Android setup
iOS setup
In your android/build.gradle file, and add the iAdvize SDK repository:
// android/build.gradle
​
allprojects {
repositories {
maven { url "https://raw.github.com/iadvize/iadvize-android-sdk/master" }
maven { url "https://jitpack.io" }
}
}
You also need to ensure that you are using the right Android framework to build (iAdvize Messenger SDK is built with Android target 33), as a good practice, also check that you are using the latest Kotlin version in android/build.gradle (you can find the version used in the plugin through its README file)
// android/build.gradle
​
buildscript {
ext.kotlin_version = '1.8.10'
}
// android/app/build.gradle
​
defaultConfig {
minSdkVersion 21
targetSdkVersion 33
}
iAdvize Messenger SDK requires a minSdkVersion >= 21.
Add this line to your Podfile, inside the target section (replace x.y.z by the latest SDK version available, and choose the versioning strategy fitting your app):
platform :ios, '13.0'
​
target 'YOUR_TARGET' do
project 'YOUR_PROJECT'
pod 'iAdvize', 'x.y.z'
end
iAdvize Messenger SDK requires a minimum iOS platform of 13.0.
Once this is done, make sure to go to ios folder and install CocoaPods dependencies:
cd ios && pod install --repo-update
The SDK supports video conversations. Thus it will request camera and microphone access before entering a video call. To avoid the app to crash, you have to setup two keys in your app Info.plist
<key>NSCameraUsageDescription</key>
<string>This application will use the camera to share photos and during video calls.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This application will use the microphone during video calls.</string>

2️⃣ Activating the SDK

Now that the SDK is available into your project build, let's integrate it into your app, first by activating it. Activation is the step that logs a user into the iAdvize flow.
You can choose between multiple authentication options:
Anonymous
For an unidentified user browsing your app.
Simple
For a logged in user in your app. You must pass a unique string identifier so that the visitor will retrieve his conversation history across multiple devices and platforms. The identifier that you pass must be unique and non-discoverable for each different logged-in user.
Secured
Use it in conjunction with your in-house authentication system. You must pass a JWE provider callback that will be called when an authentication is required, you will then have to call your third party authentication system for a valid JWE to provide to the SDK. For a full understanding of how the secured authentication works in the iAdvize platform you can refer to this Knowledge Base article.
​
​
​
​
To activate the SDK you must use the activate function with your projectId (see the Prerequisites section above to get that identifier). You have access to callbacks in order to know if the SDK has been successfully activated. In case of an SDK activation failure the callback will give you the reason of the failure and you may want to retry later.
Android
iOS
React Native
Flutter
IAdvizeSDK.activate(
projectId = projectId,
authenticationOption = authOption,
gdprOption = gdprOption,
callback = object : IAdvizeSDK.Callback {
override fun onSuccess() {
Log.d("iAdvize SDK", "The SDK has been activated.")
}
override fun onFailure(t: Throwable) {
Log.e("iAdvize SDK", "The SDK activation failed with:", t)
}
}
)
⌨️ In-context example: SDK Activation​
IAdvizeSDK.shared.activate(projectId: projectId,
authenticationOption: authOption,
gdprOption: gdprOption)) { success in
if success {
...
}
}
⌨️ In-context example: SDK Activation​
try {
// Anonymous Auth => Do not set the onJWERequested listener & set an empty userId
await IAdvizeSDK.activate(projectId, '', ...);
// Simple Auth => Do not set the onJWERequested listener & set a non-empty userId
await IAdvizeSDK.activate(projectId, "my-user-unique-id", ...);
// Secured Auth => Set the onJWERequested listener
IAdvizeSDKListeners.onJWERequested(function (eventData: any) {
console.log('onJWERequested' + ' ' + eventData);
var jwe = ... ;// Fetch JWE from your 3rd-party auth system
return jwe;
});
await IAdvizeSDK.activate(projectId, '', ...);
​
// SDK is activated
} catch (e) {
// SDK failed to activate
}
IAdvizeSdk.activate(
projectId: 'projectId',
authenticationOption: authOption
gdprOption: gdprOption,
).then((bool activated) => activated
? log('iAdvize Example : SDK activated')
: log('iAdvize Example : SDK not activated'));
Once the iAdvize Messenger SDK is successfully activated, you should see a success message in the console:
βœ… iAdvize conversation activated, the version is x.y.z

3️⃣ Logging the user out

You will have to explicitly call the logout function of the iAdvize Messenger SDK when the user sign out of your app.
Android
iOS
React Native
Flutter
IAdvizeSDK.logout()
IAdvizeSDK.shared.logout()
IAdvizeSDK.logout()
IAdvizeSdk.logout();

4️⃣ Displaying logs

To have more information on what’s happening on the SDK side you can change the log level.
Android
iOS
React Native
Flutter
// VERBOSE, INFO, WARNING, ERROR, NONE
// Default is WARNING
IAdvizeSDK.logLevel = Logger.Level.VERBOSE
// verbose, info, warning, error, success, none
// Default is warning
IAdvizeSDK.shared.logLevel = .verbose
// VERBOSE, INFO, WARNING, ERROR, SUCCESS, NONE
// Default is WARNING
IAdvizeSDK.setLogLevel(LogLevel.VERBOSE);
// verbose, info, warning, error, success, none
// Default is warning
IAdvizeSdk.setLogLevel(LogLevel.verbose);

πŸ’¬ Starting a conversation

To be able to start a conversation you will first have to trigger a targeting rule in order for the default chat button to be displayed. The Chatbox will then be accessible by clicking on that chat button.

1️⃣ Configuring the targeting language

The targeting rule configured in the iAdvize Administration Panel is setup for a given language. This means that if, for example, you setup a targeting rule to be triggered only for EN language and the current user’s device is setup with a different targeting language (for instance FR), the targeting rule will not trigger.
By default, the targeting rule language used is the user’s device current language. You can force the targeting language to a specific value using:
Android
iOS
React Native
Flutter
IAdvizeSDK.targetingController.language = LanguageOption.Custom(Language.FR)
IAdvizeSDK.shared.targetingController.language = .custom(value: .fr)
IAdvizeSDK.setLanguage('fr');
The language string should respect ISO 639-1.
IAdvizeSdk.setLanguage('fr');
The language string should respect ISO 639-1.
This language property is NOT intended to change the language displayed in the SDK. It is solely used for the targeting process purpose.

2️⃣ Activating a targeting rule

Using a targeting rule UUID (see the Prerequisites section above to get that identifier), you can engage a user by calling:
Android
iOS
React Native
Flutter
IAdvizeSDK.targetingController.activateTargetingRule(
TargetingRule(
targetingRuleUUID,
ConversationChannel.CHAT // or ConversationChannel.VIDEO
)
)
⌨️ In-context example: Targeting rule activation​
let targetingRule = TargetingRule(id: UUID, conversationChannel: .chat) // or .video
IAdvizeSDK.shared.targetingController.activateTargetingRule(targetingRule: targetingRule)
⌨️ In-context example: Targeting rule activation​
IAdvizeSDK.activateTargetingRule(targetingRuleUUIDString, ConversationChannel.CHAT); // OR ConversationChannel.VIDEO
IAdvizeSdk.activateTargetingRule(TargetingRule(uuid: 'targeting-rule-uuid', channel: ConversationChannel.chat)); // or ConversationChannel.video
If all the following conditions are met, the default chat button should appear:
  • the targeting rule exists and is enabled in the administration panel
  • the targeting rule language set in the SDK matches the language configured for this rule
  • an operator assigned to this rule is available to answer (connected and with a free chat slot)
After you activate a rule and it succeeds (by displaying the button), those conditions are checked every 30 seconds to verify that the button should still be displayed or not.
Upon the first encountered failure from this periodic check, the button is hidden and the SDK stops verifying the conditions. It means that if the rule cannot be triggered (after the first call, or after any successive check), you will have to call the activateTargetingRule (or registerUserNavigation) method again in order to restart the engagement process.

3️⃣ Initiating the conversation

Once the default chat button is displayed, the visitor tap on it to access the Chatbox. After composing and sending a message a new conversation should pop up in the operator desk.
Chat button is displayed. Visitor composes a message & send it.
Conversation appears in the operator desk

4️⃣ Following user navigation

While your user navigates through your app, you will have to update the active targeting rule in order to engage him/her with the best conversation partner at any time. In order to so, the SDK provides you with multiple navigation options to customize the behavior according to your needs:
Android
iOS
React Native
Flutter
// To clear the active targeting rule and thus stopping the engagement process (this is the default behavior)
val navOption = NavigationOption.ClearActiveRule
​
// To keep/start the engagement process with the same active targeting rule in the new user screen
val navOption = NavigationOption.KeepActiveRule
​
// To keep/start the engagement process but with another targeting rule for this screen
val navOption = NavigationOption.ActivateNewRule(newRule)
​
// Register the user navigation through your app
IAdvizeSDK.targetingController.registerUserNavigation(navOption)
// To clear the active targeting rule and thus stopping the engagement process (this is the default behavior)
let navOption: NavigationOption = .clearActiveRule
​
// To keep/start the engagement process with the same active targeting rule in the new user screen
let navOption: NavigationOption = .keepActiveRule
​
// To keep/start the engagement process but with another targeting rule for this screen
let navOption: NavigationOption = .activateNewRule(targetinRuleId: newRuleId)
​
// Register the user navigation through your app
IAdvizeSDK.shared.targetingController.registerUserNavigation(navigationOption: navOption)
// To clear the active targeting rule and thus stopping the engagement process (this is the default behavior)
IAdvizeSDK.registerUserNavigation(NavigationOption.CLEAR, "", "");
​
// To keep/start the engagement process with the same active targeting rule in the new user screen
IAdvizeSDK.registerUserNavigation(NavigationOption.KEEP, "", "");
​
// To keep/start the engagement process but with another targeting rule for this screen
IAdvizeSDK.registerUserNavigation(NavigationOption.NEW, targetingRuleUUIDString, channel);
// To clear the active targeting rule and thus stopping the engagement process (this is the default behavior)
IAdvizeSdk.registerUserNavigation(navigationOption: NavigationOption.optionClear);
​
// To keep/start the engagement process with the same active targeting rule in the new user screen
IAdvizeSdk.registerUserNavigation(navigationOption: NavigationOption.optionKeep);
​
// To keep/start the engagement process but with another targeting rule for this screen
IAdvizeSdk.registerUserNavigation(
navigationOption: NavigationOption.optionNew,
newTargetingRule: TargetingRule(uuid: 'targeting-rule-uuid', channel: ConversationChannel.chat) // or ConversationChannel.video
)
Please note that calling registerUserNavigation with the CLEAR NavigationOption will stop the engagement process, and calling it with other options will start it if it is stopped.

πŸ‘‹ Configuring GDPR and welcome message

1️⃣ Adding a welcome message

As seen above, the Chatbox is empty by default. You can configure a welcome message that will be displayed to the visitor when no conversation is ongoing.
Android
iOS
React Native
Flutter
val configuration = ChatboxConfiguration()
configuration.automaticMessage = "Any question? Say Hello to Smart and we will answer you as soon as possible! 😊"
IAdvizeSDK.chatboxController.setupChatbox(configuration)
⌨️ In-context example: Welcome message​
var configuration = ChatboxConfiguration()
configuration.automaticMessage = NSLocalizedString(
"Any question? Say Hello to Smart and we will answer you as soon as possible! 😊",
comment: ""
)
IAdvizeSDK.shared.chatboxController.setupChatbox(configuration: configuration)
⌨️ In-context example: Welcome message​
const configuration: ChatboxConfiguration = {
automaticMessage: "Any question? Say Hello to Smart and we will answer you as soon as possible! 😊",
};
IAdvizeSDK.setChatboxConfiguration(configuration);
final ChatboxConfiguration configuration = ChatboxConfiguration(
automaticMessage: "Any question? Say Hello to Smart and we will answer you as soon as possible! 😊",
);
IAdvizeSdk.setChatboxConfiguration(configuration);
When no conversation is ongoing, the welcome message is displayed to the visitor:
When no conversation is ongoing, the welcome message is displayed to the visitor

2️⃣ Enabling GDPR approval

If you need to get the visitor consent on GDPR before he starts chatting, you can pass a GDPROption while activating the SDK. By default this option is set to Disabled.
If enabled, a message will request the visitor approval before allowing him to send a message to start the conversation:
GDPR approval request
This GDPR option dictates how the SDK behaves when the user taps on the More information button. You can either:
  • provide an URL pointing to your GPDR policy, it will be opened on user click
  • provide a listener/delegate that will be called on user click and you can then implement your own custom behavior
If your visitors have already consented to GDPR inside your application, you can activate the iAdvize SDK without the GDPR process. However, be careful to explicitly mention the iAdvize Chat part in your GDPR consent details.
Android
iOS
React Native
Flutter
// Disabled
val gdprOption = GDPROption.Disabled
​
// URL
val gdprOption = GDPROption.Enabled(GDPREnabledOption.LegalUrl(URI.create("http://my.gdpr.rules.com")))
​
// Listener
val gdprOption = GDPROption.Enabled(GDPREnabledOption.Listener(object : GDPRListener {
override fun didTapMoreInformation() {
// Implement your own logic
}
}))
val configuration = ChatboxConfiguration()
configuration.automaticMessage = "Any question? Say Hello to Smart and we will answer you as soon as possible! 😊"
configuration.gdprMessage = "Your own GDPR message."
IAdvizeSDK.chatboxController.setupChatbox(configuration)
⌨️ In-context example:
// Disabled
let gdprOption = .disabled
​
// URL
if let legalInfoURL = URL(string: "http://my.gdpr.rules.com") {
let gdprOption = .enabled(option: .legalInformation(url: legalInfoURL))
}
​
// Listener
class GDPRMoreInfoListener: GDPRDelegate {
func didTapMoreInformation() {
// Implement your own logid
}
}
let gdprListener = GDPRMoreInfoListener()
let gdprOption = .enabled(option: .delegate(delegate: gdprListener))
var configuration = ChatboxConfiguration()
configuration.automaticMessage = NSLocalizedString(
"Any question? Say Hello to Smart and we will answer you as soon as possible! 😊",
comment: ""
)
configuration.gdprMessage = "Your own GDPR message."
IAdvizeSDK.shared.chatboxController.setupChatbox(configuration: configuration)
⌨️ In-context example:
// No listener set + null URL => GDPR is disabled
await IAdvizeSDK.activate(projectId, userId, null);
​
// No listener set + non-null URL => GDPR is enabled, the webpage opens when user click on more info button
await IAdvizeSDK.activate(projectId, userId, "http://my.gdpr.rules.com");
​
// Listener set => GDPR is enabled, the listener is called when user click on more info button
IAdvizeSDKListeners.onGDPRMoreInfoClicked(function (eventData: any) {
// Implement your own behavior
});
await IAdvizeSDK.activate(projectId, userId, null);
If you set both the listener and an URL, the listener will take priority.
var configuration = ChatboxConfiguration()
configuration.automaticMessage = NSLocalizedString(
"Any question? Say Hello to Smart and we will answer you as soon as possible! 😊",
comment: ""
)
configuration.gdprMessage = "Your own GDPR message."
IAdvizeSDK.setChatboxConfiguration(configuration: configuration)
// Disabled
GDPROption gdprOption = GDPROption.disabled();
​
// URL
GDPROption gdprOption = GDPROption.url(url: "http://my.gdpr.rules.com")
​
// Listener
GDPROption gdprOption = GDPROption.listener(onMoreInfoClicked: () {
log('iAdvize Example : GDPR More Info button clicked');
// Implement your own logic here
});
final ChatboxConfiguration configuration = ChatboxConfiguration(
gdprMessage: "Your own GDPR message",
);
IAdvizeSdk.setChatboxConfiguration(configuration);

🎨 Branding the Chatbox

The ChatboxConfiguration object that we used in the previous section to customize the welcome and GDPR messages can also be used to change the Chatbox UI to better fit into the look and feel of your application.
You should setup the configuration before presenting the chatbox. If you call this method while the chatbox is visible, some parameters will only apply for new messages or after closing/reopening the chatbox.

1️⃣ Updating the font

The font used in the Chatbox can easily be updated using your own font:
Android
iOS
React Native
Flutter
val configuration = ChatboxConfiguration()
configuration.fontPath = "fonts/comic_sans_ms_regular.ttf"
IAdvizeSDK.chatboxController.setupChatbox(configuration)
The font should be placed inside the assets folder. Here the file is located at src/main/assets/fonts/comic_sans_ms_regular.ttf
var configuration = ChatboxConfiguration()
configuration.font = UIFont(name: "AmericanTypewriter-Condensed", size: 11.0)
IAdvizeSDK.shared.chatboxController.setupChatbox(configuration: configuration)