Understanding the Support SDK

Overview

If your organization uses Zendesk Support or Zendesk Guide for customer service, you can use the Support SDK for Android to embed the same customer service in an Android app.

The SDK provides the following activities for embedding customer service features in an app:

  • HelpCenterActivity - Lets the user access articles in your Zendesk Guide knowledge base and, optionally, submit a ticket. See Adding Help Center

  • ViewArticleActivity - Lets the user view a specific Help Center article.

  • RequestActivity - Lets the user submit, view, and update tickets to your customer service team. See Adding a ticket form

  • RequestListActivity - Lets the user view a list of their tickets. See Adding a ticket list

The activities have their own user interface that you can customize for branding purposes. If using a Material Design theme, the SDK will inherit your primary colour, dark primary colour, and accent colour. This level of customization is suitable for most use cases. Example:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
        <item name="colorPrimary">@color/my_color_primary</item>        <item name="colorPrimaryDark">@color/my_color_primary_dark</item>        <item name="colorAccent">@color/my_color_accent</item>
</style>

If the included UI doesn't meet the product requirements, you can build your own. The SDK includes API providers to connect a custom UI to Zendesk functionality. For example, the game Nibblers by Rovio uses a custom UI and the API providers:

feedback form

Dipping a toe

Diving in

Ok, your organization has decided to use the Support SDK to embed customer service in your Android app.

  1. Before you start, meet with product managers, the customer service team, and the mobile team to decide how to integrate the SDK in the app. Use the Zendesk SDK integration checklist for guidance.

  2. After deciding how to integrate, make sure one of your Zendesk Support administrators has registered your app and turned on SDK features in the Support account.

    See Registering the application in Zendesk Support in the Support Help Center.

    Make sure the features you want to use are covered in your Zendesk plan. See the breakdown of features and limitations per plan.

  3. Add the Support SDK to your Android project.

    See Adding the Support SDK (Required).

  4. Initialize the Zendesk framework SDK in your app.

    See Initializing the Support SDK (Required).

  5. Set a user identity for the SDK.

    The SDK uses the identity to access your Zendesk Support account as a user.

    See Setting an identity (Required).

  6. Initialize the Support SDK in your app.

  7. Add a customer service feature:

    See:

  8. Customize the look and feel of the feature.

    See Customize the look.

  9. (Optional) Build your own UI in Android and then use the SDK's API providers to connect your UI to Zendesk functionality.

    See API providers.

Common terms

  • Anonymous - One of two identity types supported by the Support SDK. (The other is JWT.) An anonymous user can be a user with no information associated with them, or a user with some identifying information such as a name and email. See Set an identity.

  • API providers - A group of APIs included with the SDK that lets you build your own support features. See API providers.

  • Contact us, Contact Zendesk - Submit a ticket.

  • Help Center - A self-service platform by Zendesk Guide consisting of a knowledge base and an online community. The SDK lets users access the knowledge base. Learn more on the product page.

  • Request - A request by an end user for support. The term is interchangeable with "ticket". The request is handled by your customer service team using Zendesk Support. Learn more on the product page.

  • Ticket - Same as a support request.

SDK fact sheet

Supported languages

The Support SDK supports 33 languages. For the full list, see Language codes for Zendesk supported languages in the Support Help Center.

The SDK has full support for RTL (right-to-left) languages.

Accessibility

The Support SDK is fully accessible, with support for TalkBack and Switch Access.

Programming language

The Support SDK is written in Java. It does not include a dependency on Kotlin.

Android API compatibility

The current version of the Support SDK is compatible with Android API level 16 (4.1) and higher.

Dependencies

As the support module contains our UI code, and the support-providers module doesn't, the support module has a larger list of dependencies.

Note: Please remember that using a higher version of one of the following dependency in your app may result in our Mobile SDKs not working as intended.

'support'

Android Support Libraries:

  • com.android.support:appcompat-v7:28.0.0
  • com.android.support:cardview-v7:28.0.0
  • com.android.support:design:28.0.0
  • com.android.support:support-v4:28.0.0
  • com.android.support:support-annotations:28.0.0
  • com.android.support:recyclerview-v7:28.0.0

Third party:

  • com.google.dagger:dagger:2.23.2
  • com.jakewharton:disklrucache:2.0.2
  • com.sebchlan.picassocompat:picassocompat:1.2.1
  • com.squareup.okhttp3:logging-interceptor:3.12.1
  • com.squareup.okhttp3:okhttp:3.12.1
  • com.squareup.retrofit2:retrofit:2.3.0
  • com.squareup.retrofit2:converter-gson:2.3.0

Zendesk:

  • com.zendesk.belvedere2:belvedere:2.2.3
  • com.zendesk.suas:suas:1.2.0
  • com.zendesk.support-providers:3.0.2
  • com.zendesk:java-common:1.14
'support-providers'

Android Support Library:

  • com.android.support:support-annotations:28.0.0

Third party:

  • com.crashlytics.sdk.android:answers-shim:0.0.6
  • com.google.dagger:dagger:2.23.2
  • com.squareup.okhttp3:logging-interceptor:3.8.1
  • com.squareup.okhttp3:okhttp:3.12.1
  • com.squareup.retrofit2:retrofit:2.3.0
  • com.squareup.retrofit2:converter-gson:2.3.0

Zendesk:

  • com.zendesk:java-common:1.14

Footprint

The footprint is smaller if your app and the Support SDK share libraries. Example:

  • If you're already using appcompat-v7 and Retrofit, the footprint is 0.9M.
  • If you're already using appcompat-v7, the footprint is 1.2MB.
  • If there are no shared libraries, the footprint is 2.8MB.

The footprint is also smaller if you use the support-providers module. For example:

  • If you're already using OkHttp, the footprint is 276KB.
  • If you're already using Retrofit, the footprint is 248KB.
  • If there are no shared libraries, the footprint is 573KB.

You can reduce the footprint with ProGuard.

Method count

The executable bytecode of Android apps is contained in Dalvik Executable (DEX) files. The Dalvik Executable specification limits the total number of methods that can be referenced within a single DEX file to 65,536. As your app grows, you could exceed this limit and start getting build errors.

The following are the Support SDK's method counts:

  • 6,032 (without dependencies)
  • 10,585 (with Gson, Retrofit, Picasso, Dagger, and OkHttp dependencies, but excluding Android Support Libraries)

The totals are calculated using the dex-method-counts tool on Github on a Zendesk sample application that hasn't been optimized with ProGuard.

The method count is much lower if you're only using the API providers:

  • 2,744 (without dependencies)
  • 6,442 (with Gson, Retrofit, Dagger, and OkHttp dependencies)

For ways to avoid the 65K limit, see Enable Multidex for Apps with Over 64K Methods on the Android developer site.

The following is a breakdown of the method count with dependencies, for an empty app module (no classes) with a dependency on support:

android: 21482            accessibilityservice: 4            animation: 110            app: 283                job: 9            appwidget: 2            arch: 251                core: 78                    executor: 22                    internal: 53                    util: 1                lifecycle: 173                    livedata: 2                        core: 2                    viewmodel: 2            content: 310                pm: 38                res: 101            database: 33            graphics: 344                drawable: 130                    shapes: 3                pdf: 3            hardware: 14                display: 3                fingerprint: 11            location: 5            media: 194                browse: 19                session: 92            net: 52                http: 3            os: 210            print: 33                pdf: 5            provider: 16            renderscript: 13            service: 10                media: 10            support: 17651                annotation: 33                compat: 13                coreui: 13                coreutils: 13                design: 1847                    internal: 309                    widget: 1523                fragment: 13                graphics: 347                    drawable: 347                        animated: 13                mediacompat: 13                transition: 881                v13: 58                    view: 58                        inputmethod: 44                v4: 7741                    accessibilityservice: 6                    app: 1740                    content: 319                        pm: 39                        res: 58                    database: 3                    graphics: 298                        drawable: 167                    hardware: 42                        display: 14                        fingerprint: 28                    internal: 87                        view: 87                    math: 4                    media: 1753                        app: 31                        session: 1097                    net: 30                    os: 149                    print: 87                    provider: 188                    text: 99                        util: 20                    util: 359                    view: 1387                        accessibility: 275                        animation: 21                    widget: 1177                v7: 6679                    app: 949                    appcompat: 14                    cardview: 7                    content: 27                        res: 27                    graphics: 69                        drawable: 69                    recyclerview: 48                        extensions: 35                    text: 3                    util: 193                    view: 884                        menu: 730                    widget: 4485                        helper: 120                        util: 6            system: 3            text: 98                format: 2                method: 5                style: 7                util: 10            transition: 18            util: 71            view: 1039                accessibility: 239                animation: 45                inputmethod: 14            webkit: 17            widget: 701        com: 1950            crashlytics: 22                android: 22                    answers: 22                        shim: 17            google: 1027                gson: 1027                    annotations: 7                    internal: 613                        bind: 341                            util: 10                    reflect: 18                    stream: 87            jakewharton: 109                disklrucache: 97                picasso: 12            squareup: 561                okhttp: 25                picasso: 536            zendesk: 231                collection: 16                func: 2                logger: 35                sdk: 20                    providers: 2                service: 67                util: 91        dagger: 246            android: 113            internal: 114            multibindings: 4            releasablereferences: 7        java: 1043            awt: 1            io: 123            lang: 391                invoke: 3                ref: 6                reflect: 57            math: 5            net: 65            nio: 20                channels: 5                charset: 4                file: 2            security: 22                cert: 14            sql: 3            text: 21            util: 392                concurrent: 89                    atomic: 25                    locks: 8                logging: 5                regex: 16                zip: 21        javax: 74            annotation: 31                concurrent: 1                meta: 8            crypto: 6                spec: 1            inject: 2            net: 34                ssl: 32            security: 1                auth: 1                    x500: 1        okhttp3: 1600            internal: 841                cache: 92                cache2: 17                connection: 73                http: 73                http1: 45                http2: 288                io: 18                platform: 61                publicsuffix: 8                tls: 39                ws: 71            logging: 17        okio: 601        org: 27            xmlpull: 27                v1: 27        retrofit2: 336            converter: 12                gson: 12            http: 24        zendesk: 5887            belvedere: 600                ui: 17            core: 1131            suas: 173            support: 3983                guide: 561                request: 1592                requestlist: 324    Overall method count: 33271

The following is a breakdown of the method count with dependencies, for an empty app module (no classes) with a dependency on support-providers:

android: 89        app: 2        content: 24            res: 2        graphics: 1        net: 9        os: 12        support: 31            annotation: 31        util: 10    com: 1359        crashlytics: 22            android: 22                answers: 22                    shim: 17        google: 1027            gson: 1027                annotations: 7                internal: 613                    bind: 341                        util: 10                reflect: 18                stream: 87        jakewharton: 97            disklrucache: 97        zendesk: 213            collection: 16            func: 2            logger: 35            sdk: 2                providers: 2            service: 67            util: 91    dagger: 131        internal: 114        multibindings: 4        releasablereferences: 5    java: 743        awt: 1        io: 73        lang: 297            invoke: 3            ref: 3            reflect: 47        math: 4        net: 50        nio: 17            channels: 3            charset: 4            file: 2        security: 22            cert: 14        sql: 3        text: 19        util: 257            concurrent: 50                atomic: 17                locks: 3            logging: 4            regex: 14            zip: 21    javax: 43        crypto: 6            spec: 1        inject: 2        net: 34            ssl: 32        security: 1            auth: 1                x500: 1    okhttp3: 1600        internal: 841            cache: 92            cache2: 17            connection: 73            http: 73            http1: 45            http2: 288            io: 18            platform: 61            publicsuffix: 8            tls: 39            ws: 71        logging: 17    okio: 601    retrofit2: 336        converter: 12            gson: 12        http: 24    zendesk: 2359        core: 1131        support: 1228Overall method count: 7272