Handling Links & Deeplinks in Code

When a user taps a URL or deeplink in a campaign, the SDK opens it itself using these intent flags:

  • URLsFLAG_ACTIVITY_MULTIPLE_TASK + FLAG_ACTIVITY_NEW_TASK
  • DeeplinksFLAG_ACTIVITY_NEW_TASK

If those flags clash with your navigation, or you want to route certain links through your own code (in-app navigation, analytics, feature flags), intercept them with IPulsateLinkListener.

Intercepting links

Set the listener once, e.g. in your Application class:

Pulsate.mPulsateLinkListener = object : IPulsateLinkListener {
    override fun onLinkTrigger(link: String): Boolean {
        // Handle specific deeplinks yourself:
        if (link.startsWith("myapp://loans")) {
            navigator.openLoans()
            return true // handled — Pulsate does nothing further
        }

        // Or open everything yourself with your own flags:
        // startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link)))
        // return true

        return false // not handled — Pulsate opens the link normally
    }
}

Return true when your code handled the link (the SDK stops), false to let Pulsate open it with its default behavior.

The listener receives every URL and deeplink triggered from pushes, in-app messages, and the Feed — before the SDK acts on it.