编写插件功能
本文档主要介绍注册插件组件及使用WPS协作SDK接口编写插件业务代码。
前提条件
完成创建插件组件流程。
操作步骤
1、实现KIMSdkApplication
创建插件入口类,实现init()方法,作为组件总入口。示例代码如下:
class DemoSdkApplication : KIMSdkApplication() {
override fun init(application: Application) {
super.init(application)
// 添加初始化代码,如注册拓展实现等。
}
}
2、注册自定义DemoSdkApplication
code-group
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<meta-data
android:name="com.kingsoft.kim.sdk.demo.DemoSdkApplication"
android:value="@string/kim_sdk_application" />
</application>
</manifest>
3、环境配置
entry.json配置,在私有化环境下你需要修改成相应的服务环境地址,该地址在部署服务完成后可获取到。。在项目根目录中,编辑gradle.properties。替换
code-group
ALLOW_UNSAFE_HTTPS = true
PRIVATIZATION_CONFIG_URL = <填入私网entry.json网络地址>
私网服务入口地址一般为:https://域名或IP:端口号 (如:http://10.13.72.41:9003 ),端口号为默认端口号时需去掉默认端口号(https默认端口号为443,http默认端口号为80)。
4、编写插件代码
在编写插件业务代码过程中,通常会涉及到:
-
调用服务接口:调用WPS协作SDK服务接口,使用WPS协作相关能力。如获取当前登录用户ID。
-
实现拓展协议:拓展WPS协作原有功能,达到定制化效果。如自定义JSAPI,拦截文件打开自定义安全管控等。
-
接收广播事件:监听WPS协作SDK广播事件,针对特定事件作出响应。如监听退出登录事件断开VPN连接。
下面针对这几种场景的代码调用给出相关说明及示例代码。
调用服务接口
服务接口命名为 KIMISdkXxxService,在插件中可以通过调用这些服务接口来获取WPS协作相关服务能力。示例代码:
code-group
// 打开设置工作状态页面
val sdkUserInfoService = KIM.getService().getLinkUpService(KIMISdkUserInfoService::class.java);
sdkUserInfoService?.openSettingWorkStatusPage(fragment, workStatus);
实现拓展协议
插件拓展协议命名为 KIMExpXxx,在插件中通过注册相关拓展协议实现来提供定制化能力。示例代码:
code-group
// 实现自定义通讯录
//1.实现自定义通讯录协议
class MyContactsExp : KIMExpContacts {
override fun openContacts(context: Context) {
// 打开自定义通讯录页面
}
override fun openContactsPicker(
context: Context,
params: KIMExpContacts.ContactsPickerParams,
callback: (selectedUids: Array<String>?, chatIds: Array<String>?) -> Unit,
) {
// 打开自定义通讯录选择器页面
}
}
//2.在KIMSdkApplication类中注册扩展点
class DemoSdkApplication : KIMSdkApplication() {
override fun confMeatsOnBone(): KConf<Meat> {
return kConfOf(KIMExpContacts::class.java confTo MyContactsExp::class.java)
}
}
接收广播事件
WPS协作内部事件(如账号登录/登出)通过广播的形式通知外部。事件协议命名为KIMEventXxx,在插件中可以通过注册事件协议实现来接收广播事件。示例代码:
code-group
//登录完成后,进入主页事件
//1. 实现收到对应事件后的处理
val launchMainEvent = object : KIMEventLaunch() {
override fun launchMain(activity: Activity, needAuth: Boolean) {
// 登录成功
}
}
//2. 注册事件
KIM.getService().registerEvent(KIMEventLaunch::class.java, launchMainEvent)
//3. 反注册事件
KIM.getService().unRegisterEvent(event)
三方库集成
如果插件代码中需要引入新的aar|jar文件,在开发阶段可以拷贝 aar 文件到插件组件工程的 libs 路径
开发时临时添加 SDK 依赖
code-group
在插件组件工程下的 build.gradle 里面添加如下依赖:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation(name: 'XXXSdk', ext: 'aar')
}
正式交付时添加 SDK 依赖
在开发联调完成后找到PM,将新的aar|jar文件上传到协作Maven仓库中, 得到一个组件的版本号和对应的repo-xxx.zip。 上传完成后需要下载repo文件中的aar和pom文件放置到本地repo目录对应的aar目录下:
code-group
在插件组件工程下的 build.gradle 里面添加如下依赖:
dependencies {
implementation 'com.wps.woa.aar:ENSDK:1.0.0_2025.7.15@aar'
}
5、调试代码
直接运行插件模版工程来调试代码功能。
后续步骤
完成插件代码及调试后,可按照生成插件产物流程生成插件产物并发布到平台上。