编写插件功能

本文档主要介绍注册插件组件及使用WPS协作SDK接口编写插件业务代码。

前提条件

完成创建插件组件流程。

操作步骤

1、实现KIMSdkApplication

创建插件入口类,实现init()方法,作为组件总入口。示例代码如下:

Kotlin
class DemoSdkApplication : KIMSdkApplication() {
    override fun init(application: Application) {
        super.init(application)

        // 添加初始化代码,如注册拓展实现等。
    }
}

2、注册自定义DemoSdkApplication

code-group

Kotlin
<?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

Kotlin
ALLOW_UNSAFE_HTTPS = true
PRIVATIZATION_CONFIG_URL = <填入私网entry.json网络地址>

私网服务入口地址一般为:https://域名或IP:端口号 (如:http://10.13.72.41:9003 ),端口号为默认端口号时需去掉默认端口号(https默认端口号为443,http默认端口号为80)。

4、编写插件代码

在编写插件业务代码过程中,通常会涉及到:

下面针对这几种场景的代码调用给出相关说明及示例代码。

调用服务接口

服务接口命名为 KIMISdkXxxService,在插件中可以通过调用这些服务接口来获取WPS协作相关服务能力。示例代码:

code-group

Kotlin
// 打开设置工作状态页面
val sdkUserInfoService = KIM.getService().getLinkUpService(KIMISdkUserInfoService::class.java);
sdkUserInfoService?.openSettingWorkStatusPage(fragment, workStatus);

实现拓展协议

插件拓展协议命名为 KIMExpXxx,在插件中通过注册相关拓展协议实现来提供定制化能力。示例代码:

code-group

Kotlin
// 实现自定义通讯录

//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

Kotlin
//登录完成后,进入主页事件

//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

Plaintext
在插件组件工程下的 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

Plaintext
在插件组件工程下的 build.gradle 里面添加如下依赖:
dependencies {
    implementation 'com.wps.woa.aar:ENSDK:1.0.0_2025.7.15@aar'
}

5、调试代码

直接运行插件模版工程来调试代码功能。

后续步骤

完成插件代码及调试后,可按照生成插件产物流程生成插件产物并发布到平台上。