1# @ohos.pluginComponent (PluginComponentManager) 2 3用于给插件组件的使用者请求组件与数据,使用者发送组件模板和数据。 4 5> **说明:** 6> 7> - 本模块首批接口从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8 9## 导入模块 10 11```ts 12import pluginComponentManager from '@ohos.pluginComponent' 13``` 14 15## PluginComponentTemplate 16 17Plugin组件模板参数。 18 19**系统能力:** SystemCapability.ArkUI.ArkUI.Full 20 21| 参数 | 类型 | 必填 | 描述 | 22| ---------- | ------ | ---- | ---------------------- | 23| source | string | 是 | 组件模板名。 | 24| bundleName | string | 是 | 提供者Ability的bundleName。 | 25 26 27## PluginComponentManager 28 29### KVObject 30 31以键值对形式存储信息,符合json格式。 32 33**系统能力:** SystemCapability.ArkUI.ArkUI.Full 34 35 36| 取值范围 | 说明 | 37| --------------------- | -------------------- | 38| [key: string] | 关键字,数据类型为字符串,可取空字符串。 | 39| number | 键值,表示值类型为数字。 | 40| string | 键值,表示值类型为字符串,可取空字符串。 | 41| boolean | 键值,表示值类型为布尔值。 | 42| [] | 键值,可取值为[]。 | 43| [KVObject](#kvobject) | 键值,表示值类型为KVObject。 | 44 45 46### PushParameters 47 48用于设置FA模型下使用PluginManager.Push方法时候的需要传递的参数。 49 50**模型约束:** 此接口仅适用于FA模型。 51 52**系统能力:** SystemCapability.ArkUI.ArkUI.Full 53 54| 名称 | 类型 | 必填 | 说明 | 55| --------- | ----------------------------------- | ---- | ---------------------------------------- | 56| want | [Want](../apis-ability-kit/js-apis-application-want.md) | 是 | 组件使用者Ability信息。 | 57| name | string | 是 | 组件名称。 | 58| data | [KVObject](#kvobject) | 是 | 组件数据值。 | 59| extraData | [KVObject](#kvobject) | 是 | 附加数据值。 | 60| jsonPath | string | 否 | 存放模板路径的[external.json](#externaljson文件说明)件的路径。 | 61 62### RequestParameters 63 64用于设置FA模型下使用PluginManager.Request方法时候的需要传递的参数。 65 66**模型约束:** 此接口仅适用于FA模型。 67 68**系统能力:** SystemCapability.ArkUI.ArkUI.Full 69 70| 名称 | 类型 | 必填 | 说明 | 71| -------- | ----------------------------------- | ---- | ---------------------------------------- | 72| want | [Want](../apis-ability-kit/js-apis-application-want.md) | 是 | 组件提供者Ability信息。 | 73| name | string | 是 | 请求组件名称。 | 74| data | [KVObject](#kvobject) | 是 | 附加数据。 | 75| jsonPath | string | 否 | 存放模板路径的[external.json](#externaljson文件说明)文件的路径。jsonPath字段不为空或者未设置的时候不触发Request通信。 | 76 77### RequestCallbackParameters 78 79PluginManager.Request方法时候接收到的回调结果。 80 81**系统能力:** SystemCapability.ArkUI.ArkUI.Full 82 83| 名称 | 类型 | 必填 | 说明 | 84| ----------------- | ---------------------------------------- | ---- | ----- | 85| componentTemplate | [PluginComponentTemplate](#plugincomponenttemplate) | 是 | 组件模板。 | 86| data | [KVObject](#kvobject) | 是 | 组件数据。 | 87| extraData | [KVObject](#kvobject) | 是 | 附加数据。 | 88 89### RequestEventResult 90 91注册Request监听方法后,接受到的请求事件时候回应请求的数据类型。 92 93**系统能力:** SystemCapability.ArkUI.ArkUI.Full 94 95| 名称 | 类型 | 必填 | 说明 | 96| --------- | --------------------- | ---- | ----- | 97| template | string | 否 | 组件模板。 | 98| data | [KVObject](#kvobject) | 否 | 组件数据。 | 99| extraData | [KVObject](#kvobject) | 否 | 附加数据。 | 100 101### OnPushEventCallback 102 103OnPushEventCallback = (source: Want, template: PluginComponentTemplate, data: KVObject, 104 extraData: KVObject) => void 105 106对应Push事件的监听回调函数。 107 108**参数:** 109 110| 参数 | 类型 | 必填 | 说明 | 111| --------- | ---------------------------------------- | ---- | ---------------------- | 112| source | [Want](../apis-ability-kit/js-apis-application-want.md) | 是 | Push请求发送方相关信息。 | 113| template | [PluginComponentTemplate](#plugincomponenttemplate) | 是 | Push请求发送方相关信息请求组件模板名称。 | 114| data | [KVObject](#kvobject) | 是 | 数据。 | 115| extraData | [KVObject](#kvobject) | 是 | 附加数据。 | 116 117**示例:** 118 119```ts 120import pluginComponentManager from '@ohos.pluginComponent' 121import Want from '@ohos.app.ability.Want'; 122import PluginComponentTemplate from '@ohos.pluginComponent' 123function onPushListener(source: Want, template: PluginComponentTemplate, data: pluginComponentManager.KVObject, extraData: pluginComponentManager.KVObject) { 124 console.log("onPushListener template.source=" + template.source) 125 console.log("onPushListener source=" + JSON.stringify(source)) 126 console.log("onPushListener template=" + JSON.stringify(template)) 127 console.log("onPushListener data=" + JSON.stringify(data)) 128 console.log("onPushListener extraData=" + JSON.stringify(extraData)) 129} 130``` 131 132 133### OnRequestEventCallback 134 135OnRequestEventCallback = (source: Want, name: string, data: KVObject) => RequestEventResult 136 137对应request事件的监听回调函数。 138 139**参数:** 140 141| 参数 | 类型 | 必填 | 说明 | 142| --------- | ----------------------------------- | ---- | ----------------- | 143| source | [Want](../apis-ability-kit/js-apis-application-want.md) | 是 | request请求发送方相关信息。 | 144| name | string | 是 | 模板名称。 | 145| extraData | [KVObject](#kvobject) | 是 | 附加数据。 | 146 147**示例:** 148 149```ts 150import pluginComponentManager from '@ohos.pluginComponent' 151import Want from '@ohos.app.ability.Want'; 152function onRequestListener(source:Want, name:string, data:pluginComponentManager.KVObject) { 153 console.error("onRequestListener"); 154 console.log("onRequestListener source=" + JSON.stringify(source)); 155 console.log("onRequestListener name=" + name); 156 console.log("onRequestListener data=" + JSON.stringify(data)); 157 let RtnData:Record<string,string|pluginComponentManager.KVObject> = { 'template': "ets/pages/plugin.js", 'data': data } 158 return RtnData; 159} 160``` 161 162### push 163 164push(param: PushParameters , callback: AsyncCallback<void>): void 165 166组件提供者向组件使用者主动发送组件与数据。 167 168**模型约束:** 此接口仅适用于FA模型。 169 170**参数:** 171| 参数名 | 类型 | 必填 | 说明 | 172| -------- | --------------------------------- | ---- | ------------ | 173| param | [PushParameters](#pushparameters) | 是 | 组件使用者的详细信息。 | 174| callback | AsyncCallback<void> | 是 | 此次接口调用的异步回调。 | 175 176**示例:** 177 178```ts 179import pluginComponentManager from '@ohos.pluginComponent' 180pluginComponentManager.push( 181 { 182 want: { 183 bundleName: "com.example.provider", 184 abilityName: "com.example.provider.MainAbility", 185 }, 186 name: "plugintemplate", 187 data: { 188 "key_1": "plugin component test", 189 "key_2": 34234 190 }, 191 extraData: { 192 "extra_str": "this is push event" 193 }, 194 jsonPath: "", 195 }, 196 (err, data) => { 197 console.log("push_callback: push ok!"); 198 } 199) 200``` 201 202### request 203 204request(param: RequestParameters, callback: AsyncCallback<RequestCallbackParameters>): void 205 206组件使用者向组件提供者主动请求组件。 207 208**模型约束:** 此接口仅适用于FA模型。 209 210 211**参数:** 212 213| 参数名 | 类型 | 必填 | 说明 | 214| -------- | ---------------------------------------- | ---- | ----------------------------------- | 215| param | [RequestParameters](#requestparameters) | 是 | 组件模板的详细请求信息。 | 216| callback | AsyncCallback<[RequestCallbackParameters](#requestcallbackparameters) \| void> | 是 | 此次请求的异步回调, 通过回调接口的参数返回接受请求的数据。 | 217 218**示例:** 219 220```ts 221import pluginComponentManager from '@ohos.pluginComponent' 222pluginComponentManager.request( 223 { 224 want: { 225 bundleName: "com.example.provider", 226 abilityName: "com.example.provider.MainAbility", 227 }, 228 name: "plugintemplate", 229 data: { 230 "key_1": "plugin component test", 231 "key_2": 1111111 232 }, 233 jsonPath: "", 234 }, 235 (err, data) => { 236 console.log("request_callback: componentTemplate.ability=" + data.componentTemplate.ability) 237 console.log("request_callback: componentTemplate.source=" + data.componentTemplate.source) 238 console.log("request_callback: data=" + JSON.stringify(data.data)) 239 console.log("request_callback: extraData=" + JSON.stringify(data.extraData)) 240 } 241) 242``` 243 244### on 245 246on(eventType: string, callback: OnPushEventCallback | OnRequestEventCallback ): void 247 248提供者监听"request"类型的事件,给使用者返回通过request接口主动请求的数据;使用者监听"push"类型的事件,接收提供者通过push接口主动推送的数据。 249 250**参数:** 251 252| 参数名 | 类型 | 必填 | 说明 | 253| --------- | ---------------------------------------- | ---- | ---------------------------------------- | 254| eventType | string | 是 | 监听的事件类型, 可选值为:"push" 、"request"。<br/>"push”:指组件提供者向使用者主动推送数据。<br/>"request”:指组件使用者向提供者主动请求数据。 | 255| callback | [OnPushEventCallback](#onpusheventcallback) \| [OnRequestEventCallback](#onrequesteventcallback) | 是 | 对应监听回调,push事件对应回调类型为[OnPushEventCallback](#onpusheventcallback),request事件对应回调类型为[OnRequestEventCallback](#onrequesteventcallback) 。 | 256 257**示例:** 258 259```ts 260import pluginComponentManager from '@ohos.pluginComponent' 261import Want from '@ohos.app.ability.Want'; 262import {PluginComponentTemplate} from '@ohos.pluginComponent' 263function onPushListener(source:Want, template:PluginComponentTemplate, data:pluginComponentManager.KVObject, extraData:pluginComponentManager.KVObject) { 264 console.log("onPushListener template.source=" + template.source) 265 console.log("onPushListener source=" + JSON.stringify(source)) 266 console.log("onPushListener template=" + JSON.stringify(template)) 267 console.log("onPushListener data=" + JSON.stringify(data)) 268 console.log("onPushListener extraData=" + JSON.stringify(extraData)) 269} 270function onRequestListener(source:Want, name:string, data:pluginComponentManager.KVObject) { 271 console.error("onRequestListener"); 272 console.log("onRequestListener source=" + JSON.stringify(source)); 273 console.log("onRequestListener name=" + name); 274 console.log("onRequestListener data=" + JSON.stringify(data)); 275 let RtnData:Record<string,string|pluginComponentManager.KVObject> = { 'template': "ets/pages/plugin.js", 'data': data } 276 return RtnData; 277} 278pluginComponentManager.on("push", onPushListener) 279pluginComponentManager.on("request", onRequestListener) 280``` 281 282## external.json文件说明 283 284external.json文件由开发者创建。external.json中以键值对形式存放组件名称以及对应模板路径。以组件名称name作为关键字,对应模板路径作为值。 285 286**示例** 287 288```json 289{ 290 "PluginProviderExample": "ets/pages/PluginProviderExample.js", 291 "plugintemplate2": "ets/pages/plugintemplate2.js" 292} 293 294```