Configuring delegates for links, emails and phone numbers

When a user taps a URL, phone number, or email address sent to a conversation, the SDK handles the event automatically by launching the default app capable of completing the action:

  • the default browser for a URL
  • the default phone app for a phone number
  • the default email app for an email address

Note: Only URLs such as https://www.zendesk.com/ are made clickable in the UI. Other URIs such as zendesk://myapp will not be clickable.

To customize this behavior, implement a MessagingDelegate and override the shouldHandleUrl function. This function is called whenever a user clicks a URL.

To stop the SDK from opening the default browser, return false in this situation. When this occurs, you must handle the completion of the action yourself. The function receives two parameters:

  • url: the URL that was clicked
  • urlSource: an enumeration that describes where in the UI the url was clicked, such as a text message, a carousel item, and so on.

To view a demo of this, see Zendesk SDK Demo app in GitHub.

The following snippets show to set a MessagingDelegate in Kotlin and Java:

Kotlin

Messaging.setDelegate(object : MessagingDelegate() {    override fun shouldHandleUrl(url: String, urlSource: UrlSource): Boolean {        // Your custom action...
        // Return false to prevent the SDK from handling the URL automatically        // Return true to allow the SDK to handle the URL automatically, even        // if you have done something custom        return false    }})

Java

Messaging.setDelegate(new MessagingDelegate() {    @Override    public boolean shouldHandleUrl(@NotNull String url, @NotNull UrlSource urlSource) {        // Your custom action...
        // Return false to prevent the SDK from handling the URL automatically        // Return true to allow the SDK to handle the URL automatically, even        // if you have done something custom        return false;    }});