Use this array to declare the specific URL protocols that the SDK can expect to see on incoming links from Iterable, so it knows that it can safely handle them as needed. This array helps prevent the SDK from opening links that use unexpected URL protocols.
To allow the SDK to handle http
, tel
, and custom
links, use code similar to this:
const config = new IterableConfig();
config.allowedProtocols = ["http", "tel", "custom"];
IMPORTANT: Iterable's React Native SDK handles https, action, itbl, and iterable links, regardless of the contents of this array. However, you must explicitly declare any other types of URL protocols you'd like the SDK to handle (otherwise, the SDK won't open them in the web browser or as deep links).
DEPRECATED - please use useInMemoryStorageForInApps
as a replacement for this config option.
NOTE: until this option is removed, it will still function with useInMemoryStorageForInApps
by
doing an OR operation, so if either this or useInMemoryStorageForInApps
are set to true
,
the native Android SDK layer will use in memory storage for in-apps.
This specifies the useInMemoryStorageForInApps
config option downstream to the Android SDK layer.
Optional
authA function expression that provides a valid JWT for the app's current user to Iterable's React Native SDK.
Provide an implementation for this method only if your app uses a JWT-enabled API key.
A promise that resolves to an IterableAuthResponse
, a string
,
or undefined
.
To make requests to Iterable's API using a JWT-enabled API key, you should
first fetch a valid JWT for your app's current user from your own server,
which must generate it. The authHandler
provides this JWT to Iterable's
React Native SDK, which can then append the JWT to subsequent API requests.
The SDK automatically calls authHandler
at various times:
expiringAuthTokenRefreshPeriod
)InvalidJwtPayload
error code. However, if the SDK receives a second
consecutive 401 with an InvalidJwtPayload
error when it makes a request
with the new token, it won't call the authHandler
again until you call
setEmail
or setUserId
without passing in an auth token.TIP: The setEmail
and setUserId
mobile SDK methods accept an
optional, prefetched auth token. If you encounter SDK errors related to
auth token requests, try using this parameter.
For more information about JWT-enabled API keys, read JWT-Enabled API Keys.
This example demonstrates how an app that uses a JWT-enabled API key might initialize the SDK.
const config = new IterableConfig();
config.authHandler = () => {
// ... Fetch a JWT from your server, or locate one you've already retrieved
return new Promise(function (resolve, reject) {
// Resolve the promise with a valid auth token for the current user
resolve("<AUTH_TOKEN>")
});
};
config.autoPushRegistration = false;
Iterable.initialize('<YOUR_API_KEY>', config);
When set to true
(which is the default value), IterableSDK will automatically register and deregister
notification tokens when you provide email
or userId
values to the SDK using Iterable.setEmail
or Iterable.setUserId.
Optional
customA function expression used to handle action://
URLs for in-app buttons
and links.
Use this method to determine whether or not the app can handle the clicked
custom action URL. If it can, it should handle the action and return true
.
Otherwise, it should return false
.
The custom action that was triggered.
The context in which the action was triggered. In other words, information about where the action was invoked.
A boolean indicating whether the action was handled.
A custom action URL has format action://customActionName
: an action://
prefix, followed by a custom action name. Decide with your marketing team
on a set of known custom actions your app should support.
WARNING: Earlier versions of the SDK used the itbl:// prefix
for custom
action URLs. The SDK still supports these custom actions, but they are
deprecated and will not be supported forever. Migrate to action://
as it's
possible to do so.
This example responds to the action://achievedPremierStatus
custom action URL by updating the app's styles and return true
. Since this is the only custom action handled by the method, it returns false
for anything else.
const config = new IterableConfig();
config.customActionHandler = (action, context) => {
if (action.type == "achievedPremierStatus") {
// For this action, update the app's styles
this.updateAppStyles("premier");
return true;
}
return false;
}
Iterable.initialize('<YOUR_API_KEY>', config);
This specifies the data region which determines the data center and associated endpoints used by the SDK
Android only feature: This controls whether the SDK should enforce encryption for all PII stored on disk. By default, the SDK will not enforce encryption and may fallback to unencrypted storage in case the encryption fails.
The number of seconds before the current JWT's expiration that the SDK should call the
authHandler
to get an updated JWT.
Number of seconds between each in-app message when displaying multiple in-app messages in sequence.
Defaults to 30 seconds.
Optional
inImplement this callback to override default in-app behavior.
By default, every single in-app will be shown as soon as it is available. If more than 1 in-app is available, we show the first.
The in-app message to be processed.
A response indicating how the in-app message should be shown.
Set the verbosity of Android and iOS project's log system.
By default, you will be able to see info level logs printed in IDE when running the app.
Set whether the React Native SDK should print function calls to console.
This is for calls within the React Native layer, and is separate from logLevel
which affects the Android and iOS native SDKs
Optional
pushThe name of the Iterable push integration that will send push notifications to your app.
Defaults to your app's application ID or bundle ID for iOS.
Note: Don't specify this value unless you are using an older Iterable push integration that has a custom name. To view your existing integrations, navigate to Settings > Mobile Apps.
This specifies the push platform to use for push notifications. Either sandbox
, production
, or auto
.
The default value is auto
, which means the SDK will automatically determine the push platform to use.
However, you can also set this to sandbox
or production
to force the SDK to use a specific platform.
Optional
urlA callback function used to handle deep link URLs and in-app message button and link URLs.
The URL to be processed (likely from a click).
The context in which the URL action is being performed. Describes the source of the URL (push, in-app, or universal link) and information about any associated custom actions.
A boolean indicating whether the URL was successfully handled.
Use this method to determine whether or not the app can handle the clicked
URL. If it can, the method should navigate the user to the right content in
the app and return true
. Otherwise, it should return false
to have the web
browser open the URL.
This example searches for URLs that contain product/, followed by more text. Upon finding this sequence of text, the code displays the appropriate screen and returns true
. When it's not found, the app returns false
.
const config = new IterableConfig();
config.urlHandler = (url, context) => {
if (url.match(/product/([^/]+)/i)) {
this.navigate(match[1]);
return true; // handled
}
return false; // not handled
};
Iterable.initialize('<YOUR_API_KEY>', config);
This specifies the useInMemoryStorageForInApps
config option downstream to the native SDK layers.
It determines whether Android and iOS apps should store in-app messages in memory, rather than in an unencrypted local file (defaults to false
).
Please read the respective IterableConfig
files for specific details on this config option.
For more information about this option, and the deprecated-but-related
androidSdkUseInMemoryStorageForInApps
available in version 1.3.7 of
Iterable's React Native SDK, read the release notes for version 1.3.9.
Converts the IterableConfig instance to a dictionary object.
An object representing the configuration.
A boolean indicating if an authentication handler is present.
TODO: Figure out if this is purposeful
A boolean indicating if a custom action handler is present.
TODO: Figure out if this is purposeful
A boolean indicating if an in-app handler is present.
TODO: Figure out if this is purposeful
The log level for the SDK.
A boolean indicating if a URL handler is present.
TODO: Figure out if this is purposeful
An IterableConfig object sets various properties of the SDK.
An IterableConfig object is passed into the static initialize method on the Iterable class when initializing the SDK.