@iterable/react-native-sdk - v2.0.3
    Preparing search index...

    Class IterableConfig

    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.

    Index

    Constructors

    Properties

    allowedProtocols: string[] = []

    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).

    androidSdkUseInMemoryStorageForInApps: boolean = false

    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.

    authHandler?: () => Promise<undefined | string | IterableAuthResponse>

    A 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.

    Type Declaration

    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:

    • When your app sets the user's email or user ID.
    • When your app updates the user's email.
    • Before the current JWT expires (at a configurable interval set by expiringAuthTokenRefreshPeriod)
    • When your app receives a 401 response from Iterable's API with a 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);
    autoPushRegistration: boolean = true

    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.

    checkForDeferredDeeplink: boolean = false

    When set to true, it will check for deferred deep links on first time app launch after installation from the App Store.

    This is currently deprecated and will be removed in the future.

    customActionHandler?: (
        action: IterableAction,
        context: IterableActionContext,
    ) => boolean

    A 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.

    Type Declaration

    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);
    dataRegion: IterableDataRegion = IterableDataRegion.US

    This specifies the data region which determines the data center and associated endpoints used by the SDK

    encryptionEnforced: boolean = false

    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.

    expiringAuthTokenRefreshPeriod: number = 60.0

    The number of seconds before the current JWT's expiration that the SDK should call the authHandler to get an updated JWT.

    inAppDisplayInterval: number = 30.0

    Number of seconds between each in-app message when displaying multiple in-app messages in sequence.

    Defaults to 30 seconds.

    inAppHandler?: (message: IterableInAppMessage) => IterableInAppShowResponse

    Implement 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.

    Type Declaration

    Implement this property to override default in-app message behavior. For example, you might use the custom payload associated with an incoming message to choose whether or not to display it, or you might inspect the priorityLevel property to determine the message's priority.

    config.inAppHandler = (message: IterableInAppMessage) => {
    return message?.read ? IterableInAppShowResponse.skip : IterableInAppShowResponse.show;
    }
    logLevel: IterableLogLevel = IterableLogLevel.info

    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.

    logReactNativeSdkCalls: boolean = true

    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

    pushIntegrationName?: string

    The 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.

    pushPlatform: IterablePushPlatform = IterablePushPlatform.auto

    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.

    urlHandler?: (url: string, context: IterableActionContext) => boolean

    A callback function used to handle deep link URLs and in-app message button and link URLs.

    Type Declaration

      • (url: string, context: IterableActionContext): boolean
      • Parameters

        • url: string

          The URL to be processed (likely from a click).

        • context: IterableActionContext

          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.

        Returns boolean

        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);
    useInMemoryStorageForInApps: boolean = false

    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.

    Methods

    • Converts the IterableConfig instance to a dictionary object.

      Returns {
          allowedProtocols: string[];
          androidSdkUseInMemoryStorageForInApps: boolean;
          authHandlerPresent: boolean;
          autoPushRegistration: boolean;
          customActionHandlerPresent: boolean;
          dataRegion: IterableDataRegion;
          encryptionEnforced: boolean;
          expiringAuthTokenRefreshPeriod: number;
          inAppDisplayInterval: number;
          inAppHandlerPresent: boolean;
          logLevel: IterableLogLevel;
          pushIntegrationName: undefined | string;
          pushPlatform: IterablePushPlatform;
          urlHandlerPresent: boolean;
          useInMemoryStorageForInApps: boolean;
      }

      An object representing the configuration.

      • allowedProtocols: string[]
      • androidSdkUseInMemoryStorageForInApps: boolean
      • authHandlerPresent: boolean

        A boolean indicating if an authentication handler is present.

        TODO: Figure out if this is purposeful

      • autoPushRegistration: boolean
      • customActionHandlerPresent: boolean

        A boolean indicating if a custom action handler is present.

        TODO: Figure out if this is purposeful

      • dataRegion: IterableDataRegion
      • encryptionEnforced: boolean
      • expiringAuthTokenRefreshPeriod: number
      • inAppDisplayInterval: number
      • inAppHandlerPresent: boolean

        A boolean indicating if an in-app handler is present.

        TODO: Figure out if this is purposeful

      • logLevel: IterableLogLevel

        The log level for the SDK.

      • pushIntegrationName: undefined | string
      • pushPlatform: IterablePushPlatform
      • urlHandlerPresent: boolean

        A boolean indicating if a URL handler is present.

        TODO: Figure out if this is purposeful

      • useInMemoryStorageForInApps: boolean