从6.0.0(20)开始,支持服务动态授权码Button功能。
服务动态授权码Button提供获取系统生成的动态授权码(code)的能力,获取的code可用于推送服务动态。在元服务中,开发者需要在前端界面将触发服务的场景化 Button 组件的OpenType 的值设置为 OpenType.REQUEST_SUBSCRIBE_MESSAGE。当用户点击 Button 后,可以通过onRequestSubscribeMessage事件回调可以获取code。
导入Scenario Fusion Kit模块以及相关公共模块。
import { FunctionalButton, functionalButtonComponentManager } from '@kit.ScenarioFusionKit';
import { hilog } from '@kit.PerformanceAnalysisKit'; 在容器中声明FunctionalButton,指定Button的openType,并设置对应的回调函数,代码如下:
@Entry
@Component
struct Index {
build() {
Row() {
Column() {
// 构建FunctionalButton组件实例。
FunctionalButton({
params: {
// OpenType.REQUEST_SUBSCRIBE_MESSAGE表示该按钮用于获取授权码。
openType: functionalButtonComponentManager.OpenType.REQUEST_SUBSCRIBE_MESSAGE,
label: '服务动态授权码',
// 在获取服务动态授权码时,名为subSceneId的参数是必填项。
subSceneId: '',
// 调整按钮样式。
styleOption: {
styleConfig: new functionalButtonComponentManager.ButtonConfig()
.fontSize(20)
}
},
// 当OpenType为REQUEST_SUBSCRIBE_MESSAGE时,回调必须为onRequestSubscribeMessage。
controller: new functionalButtonComponentManager.FunctionalButtonController()
.onRequestSubscribeMessage((err, data) => {
if (err) {
// 错误日志处理。
hilog.error(0x0000, 'testTag', 'Failed to request subscribe message, error: %{public}d %{public}s', err.code, err.message);
return;
}
// 成功日志处理。
hilog.info(0x0000, 'testTag', 'succeeded in requesting subscribe message');
// 处理服务代码。
let code = data.code;
})
})
}.width('100%')
.padding({ left: 16, right: 16 })
}.height('100%')
}
}
openType参数填写"functionalButtonComponentManager.OpenType.REQUEST_SUBSCRIBE_MESSAGE"指定Button为服务动态授权码类型。
subSceneId参数在服务动态授权码场景中是必填的,参考服务动态场景模板。
controller参数必须对应填写"new functionalButtonComponentManager.FunctionalButtonController().onRequestSubscribeMessage"。
可使用自定义Modifier设置按钮样式,参考示例。
其他参数请参考:FunctionalButton(Button组件)。