Skip to content

Overview

The cordova-plugin-identity-orchestration plugin runs Mosaic Journeys from a Cordova app on iOS and Android. A journey is a server-driven flow: you start it by id, the SDK reports each step the client needs to handle, and you answer with submitClientResponse until the journey completes or is rejected.

The plugin exposes cordova.tsido. Journey state is pushed to a listener. It is not the return value of startJourney().

For native SDK behavior, see the iOS quickstart and the Android quickstart.

Capabilities

  • Start a journey and receive each step on a listener
  • Submit a client response, including cancel, fail, and resend
  • Start a mobile approve journey from a push payload
  • Register an APNs or FCM token for mobile approve
  • Generate a debug PIN for a journey paused on a debug break

Requirements

  • cordova-ios 8.0.0 or higher
  • cordova-android 14.0.1 or higher
  • iOS 13.0 or higher, Xcode 16 or higher (Swift Package Manager must reach GitHub)
  • Android minSdk 24 (the SDK floor is API 21), compileSdk 35
  • android.useAndroidX=true (cordova-android 14 sets this by default)

Installation

cordova plugin add https://github.com/TransmitSecurity/cordova_ts_identity_orchestration_plugin.git#v1.0.0
cordova platform add ios android
cordova prepare ios android

Platform configuration

Set the deployment target in config.xml:

<platform name="ios">
    <preference name="deployment-target" value="13.0" />
</platform>

Xcode resolves IdentityOrchestration and TSCoreSDK through Swift Package Manager on the first build. If it does not, use File → Packages → Resolve Package Versions.

This plugin does not use CocoaPods. cordova prepare removes the unused CocoaPods files that cordova-ios generates, so the iOS project stays on Swift Package Manager.

When a journey uses the camera or Face ID, add the usage strings yourself. The plugin does not request permissions it cannot know you need:

<platform name="ios">
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>Used to capture identity documents.</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSFaceIDUsageDescription">
        <string>Used to authenticate you.</string>
    </config-file>
</platform>

Credentials

initializeSDK() reads credentials from a native config file. initialize(clientId, options) takes them in JavaScript. Use one of the two.

Ship TransmitSecurity.plist as a resource:

<platform name="ios">
    <resource-file src="resources/ios/TransmitSecurity.plist" target="TransmitSecurity.plist" />
</platform>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>credentials</key>
    <dict>
        <key>baseUrl</key>
        <string>https://api.transmitsecurity.io/</string>
        <key>clientId</key>
        <string>YOUR_CLIENT_ID</string>
        <key>applicationId</key>
        <string>default_application</string>
    </dict>
</dict>
</plist>

The configurationFile argument is the iOS plist basename. Android ignores it and reads string resources.

Use the API base URL for your region:

RegionBase URL
UShttps://api.transmitsecurity.io/
EUhttps://api.eu.transmitsecurity.io/
Canadahttps://api.ca.transmitsecurity.io/
Australiahttps://api.au.transmitsecurity.io/
Japanhttps://api.gasne1-ts01.transmitsecurity.io/
Sandboxhttps://api.sbx.transmitsecurity.io/
Custom domainhttps://<your-custom-domain>/ (see Custom domains)

Initialization

Register a journey listener before you start a journey. The plugin buffers events until the first listener attaches, on the native side and in JavaScript, up to 50 events. Treat that buffer as a safety net for the startup race.

document.addEventListener('deviceready', function () {
  cordova.tsido.addJourneyResponseListener(onJourneyEvent);

  cordova.tsido.setLoggingEnabled(true)
    .then(function () { return cordova.tsido.initializeSDK('TransmitSecurity'); })
    .catch(function (e) { console.error('init failed', e); });
}, false);

initializeSDK() with no argument uses the default plist name TransmitSecurity. Or pass an explicit client ID:

await cordova.tsido.initialize('YOUR_CLIENT_ID', {
  serverPath: 'https://api.transmitsecurity.io',
});

See InitializeOptions for the full options object.

Next steps