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 Support 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.

'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.13
  • 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.1
  • 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.13
  • 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: 1228
Overall method count: 7272