Handling Journey Auto-Blocking in Standard SDK

Overview

Journey Auto-Blocking is a security feature in IDWise that stops the onboarding process when one or more high-risk conditions are detected. This helps prevent suspicious or non-compliant sessions from proceeding further.

For example, when Device Intelligence is enabled, the SDK evaluates smart signals such as rooted devices, emulators, or VPN usage. If any configured condition is not met, the journey is automatically blocked, and the user is shown a clear error message.

📘

Info

Minimum SDK Version that supports this feature is 5.4.0

Implementation

If you're using the Standard SDK, IDWise automatically:

  • Evaluates all preconditions on start of the journey.
  • Notifies the user if the device is blocked.
  • Displays an in-app error screen explaining the issue.

Example: Rooted Device Error Screen

Example error screen when rooted device is detected


Optional Callback for Journey Blocked

In addition to the built-in error screen, you can listen for the onJourneyBlocked callback to take additional action in your app logic.

Callback Behavior

  • onJourneyBlocked will be Triggered when a journey is blocked.
  • onJourneyCancelled will not be triggered in this case
  • Useful for analytics, user notifications, or custom UX

Platform-Specific Examples

override fun onJourneyBlocked(journeyBlockedInfo: JourneyBlockedInfo) {
  Log.d("IDWiseSDKCallback", "onJourneyBlocked $journeyBlockedInfo")
}
func onJourneyBlocked(journeyBlockedInfo: JourneyBlockedInfo) {
  print("IDWiseSDKCallback", "onJourneyBlocked \(journeyBlockedInfo)")
}
onJourneyBlocked(data) {
  console.log(`Journey Blocked with ${data}`);
}
onJourneyBlocked: (dynamic journeyInfo) {
  print("onJourneyBlocked: $journeyInfo");
}
onJourneyBlocked(journeyBlockedInfo) {
  console.log(`onJourneyBlocked ${journeyBlockedInfo.journeyId}`);
}

Data Structures

JourneyBlockedInfo

FieldTypeDescription
journeyIdStringThe ID of the blocked journey
blockedTransactionBlockedTransactionContains the reason and conditions of the block

BlockedTransaction

FieldTypeDescription
canRetryBooleanOnly applicable in Dynamic SDK mode
blockReasonMessageStringMessage shown to the user, already handled by the SDK
allBlockReasonsList<BlockReason>List of all unmet conditions; the first is the highest priority

BlockReason

FieldTypeDescription
blockReasonCodeStringUnique code identifying the cause of the block

Block Reason Codes

CodeDescription
block_reason_vpnVPN or proxy detected
block_reason_rooted_deviceRooted or jailbroken device
block_reason_browser_tamperingSuspicious browser environment
block_reason_browser_incognitoIncognito/private browsing detected
block_reason_developer_toolsDeveloper/debugging tools are active
block_reason_emulatorEmulator environment detected
block_reason_high_device_usageDevice has excessive journey attempts
block_reason_ip_restrictionIP address outside allowed range
block_reason_location_not_supportedUnsupported geolocation
block_reason_ip_block_listIP address on blocklist
block_reason_cloned_appApplication clone detected
block_reason_location_spoofingFake GPS or geolocation masking tools
block_reason_privacy_settingsDevice privacy settings prevent evaluation
block_reason_remote_control_toolsRemote control or remote access tools found
block_reason_cross_device_usageSuspicious cross-device journey behavior
block_reason_fridaFrida (dynamic instrumentation) detected
block_reason_virtual_machineVirtual machine detected
block_reason_assistance_requiredUser/device flagged for manual assistance

📘

Note

Only the checks enabled in your Device Intelligence block are evaluated. Disabled checks are skipped.