本章节介绍了HarmonyOS SDK的接入方法。
前言
本SDK基于HarmonyOS API 12开发,compatibleSdkVersion为5.0.0(12)。
准备工作
请参考HarmonyOS应用开发文档准备HarmonyOS应用开发环境。
请参考Native应用开发流程创建鸿蒙应用,在应用设置中查看AppKey和AppSecret。
第一步:安装SDK
在HarmonyOS应用根目录执行以下命令来安装SDK:
ohpm install @aliyun/feedback
ohpm工具及更多关于OpenHarmony安装第三方SDK的信息请参考OpenHarmony三方库中心仓说明。
第二步:初始化SDK
初始化SDK的操作并非强制要求在应用启动时进行,可以在实际使用之前进行调用,代码如下:
其中appKey,appSecret请配置为在准备工作中获取的AppKey和AppSecret。
import {FeedbackAPI,InitConfig} from '@aliyun/feedback';
let feedback_config: InitConfig = new InitConfig({
appkey: 'appKey参数',
appSecret: 'appSecret参数',
backIconResource: $r('app.media.app_logo'),
loadProgressColor: '#0DD0FF',
isOpenLog: true,
rightButtonFontSize: 16
})
//getContext() 为当前组件所在Ability的Context
FeedbackAPI.init(getContext(), feedback_config)
详细信息查看Harmony SDK API。
第三步:获取反馈未读消息数(可选)
SDK提供了获取未读消息数量的功能,若有展示需求,可进行获取,代码如下:
FeedbackAPI.getFeedbackUnreadCount((count : number) => {
promptAction.showToast({ message: "未读消息数为:" + count })
}, () => {
promptAction.showToast({ message: "获取未读消息数失败" })
})
详细信息查看Harmony SDK API。
第四步:添加相册、拍照、麦克风权限申请回调(可选)
用户首次进行需要授权操作时,SDK会直接向用户申请相关权限。
开发者可以通过如下方式注册回调监听,在SDK申请权限之前,说明权限用途,代码如下:
let albumCallback: IPermissionRequestInterrupt = {
interrupt: (context: Context, action: string, permissions: Permissions[],
callback: InterruptCallback): void => {
showDialog("即将进行敏感权限授权","相册", "选择问题照片进行反馈", callback)
}
}
FeedbackAPI.setPermissionInterrupt(FeedbackAPI.ACTION_ALBUM, albumCallback)
let cameraCallback: IPermissionRequestInterrupt = {
interrupt: (context: Context, action: string, permissions: Permissions[],
callback: InterruptCallback): void => {
showDialog("即将进行敏感权限授权","相机", "拍照问题进行反馈", callback)
}
}
FeedbackAPI.setPermissionInterrupt(FeedbackAPI.ACTION_CAMERA, cameraCallback)
let microPhoneCallback: IPermissionRequestInterrupt = {
interrupt: (context: Context, action: string, permissions: Permissions[],
callback: InterruptCallback): void => {
showDialog("即将进行敏感权限授权","录音", "录制语音描述进行反馈", callback)
}
}
FeedbackAPI.setPermissionInterrupt(FeedbackAPI.ACTION_MICROPHONE, microPhoneCallback)
// 这里是示意代码,弹出提示窗,说明权限用途
private showDialog(title: string, permission: string, message: string, callback: InterruptCallback) {
AlertDialog.show({
title: title,
message: `${permission}: ${message}`,
autoCancel: true,
alignment: DialogAlignment.Center,
gridCount: 4,
primaryButton: {
value: '取消',
action: () => {
callback.stopRequest()
}
},
secondaryButton: {
enabled: true,
defaultFocus: true,
style: DialogButtonStyle.HIGHLIGHT,
value: '确定',
action: () => {
callback.goOnRequest()
}
},
cancel: () => {
callback.stopRequest()
}
}
)
}
若用户首次拒绝权限申请,SDK提供了二次权限申请的回调。
开发者可以在此处进行文本提醒,或引导用户跳转至系统设置页面,代码如下:
let rationaleCallback: IPermissionRationale = {
onPermissionDenied: (permissions: Permissions[]): Promise<void> => {
//跳转到设置页面
return new Promise<void>((resolve, reject) => {
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext() as common.UIAbilityContext;
atManager.requestPermissionOnSetting(context, permissions).then((result) => {
resolve()
}).catch((error: BusinessError) => {
reject(error)
})
})
}
}
FeedbackAPI.setPermissionRationale(rationaleCallback)
详细信息查看Harmony SDK API。
第五步:设置自定义扩展参数、昵称、联系方式(可选)
SDK提供动态配置用户昵称、用户联系方式及扩展参数能力,开发者可根据具体需求进行自定义配置,代码如下:
FeedbackAPI.setUserNick('昵称')
FeedbackAPI.setDefaultUserContactInfo('联系方式')
let ext = `{"key":"value"}`
FeedbackAPI.setAppExtInfo(ext)
拓展参数需要是满足json格式的字符串
详细信息查看Harmony SDK API。
第六步:打开用户反馈页面
开发者配置无误后,即可打开用户反馈页面。
打开用户反馈页面属于耗时操作,因此建议开发者增加loading组件以提升用户体验。
@State progressStatus = false
//LoadingProgress 具体实现...
this.progressStatus = true
FeedbackAPI.openFeedback(() => {
//打开成功
this.progressStatus = false
}, (info, code) => {
//打开失败
this.progressStatus = false
})
详细信息查看Harmony SDK API。