Android zendesk SDK 的接入

1,899 阅读1分钟

这是我参与 8 月更文挑战的第 10 天,活动详情查看: 8月更文挑战

背景

由于项目要集成一套工单系统, 并且项目是在海外市场, 出于种种原因,国内的一些厂商的工单系统都不能使用,所以就选择了zendesk

准备

首先在网站中进行注册账号 注册成功后, 在网站的设置页中创建项目

WX20210810-210015@2x.png 在出现的页面中输入应用名称 WX20210810-210357@2x.png 在身份验证方法中选择一个验证方法,如果对身份没有什么要求可以选择匿名,如果对身份有严格的要求就需要选择JWT, 就需要后台进行支持 WX20210810-210705@2x.png

集成

SDK文档

PS : Zendesk SDK最低支持API level 21 运行Zendesk SDK Java的运行环境为8

  • 设置Java版本
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
  • 设置所需权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 在项目根目录添加Zendesk Maven 存储库
repositories {
    maven {
        url "https://zendesk.jfrog.io/artifactory/repo"
    }
}
  • 添加依赖
implementation (group: 'com.zendesk', name: 'support', version: '5.0.2'){
    exclude group: 'com.squareup'
}

使用

private static final String SUBDOMAIN_URL = "Your Zendesk URL";
private static final String APPLICATION_ID = "Your App ID";
private static final String OAUTH_CLIENT_ID = "Your Client ID";
  • Application或者需要调用zendesk时提前初始化SDK
Zendesk.INSTANCE.init(this, SUBDOMAIN_URL, APPLICATION_ID, OAUTH_CLIENT_ID);
  • 在启动Zendesk前需要提前设置身份
Zendesk.INSTANCE.setIdentity(
        new AnonymousIdentity.Builder()
                .withNameIdentifier("Your Name")
                .withEmailIdentifier("Your Email")
                .build()
);
  • 初始化Support
Support.INSTANCE.init(Zendesk.INSTANCE);
  • 如果想直接跳转到工单系统
RequestActivity.builder().withRequestSubject("添加标题").withTags("添加Tag").show(this);
  • 如果需要查看工单列表, 然后从工单列表跳转到工单系统
Configuration requestActivityConfig = RequestActivity.builder()
        .withTags("MyVitalsPro_v" + BuildConfig.VERSION_NAME, AppInfoUtils.PHONE_NAME + "_" + AppInfoUtils.RELEASE_VERSION)
        .config();

RequestListActivity.builder()
        .show(requireContext(), requestActivityConfig);

PS: 这里Android有个坑, 就是在如果是没有工单的情况下, 那个创建工单的文字显示不出来,需要根据SDK的规则重新修改zs_activity_request_list_scene_empty这个layout