构造初始化配置对象
构造SDK初始化入参(初始化配置对象)。示例代码如下
import {InitConfig} from '@aliyun/feedback';
//初始化参数
const feedback_config = new InitConfig({
appkey:'appKey参数',
appSecret: 'appSecret参数',
backIconResource: $r('app.media.app_logo'),
loadProgressColor: '#0dd0ff',
isOpenLog: true,
rightButtonFontSize: 16
})
参数 | 说明 |
appKey | 用于指定App的AppKey 【数据类型】string 【是否必选】是 【是否可为空】否 【默认值】无 |
appSecret | 用于指定App的AppSecret 【数据类型】string 【是否必选】是 【是否可为空】否 【默认值】无 |
loadProgressColor | 用于设置webview加载进度条的颜色 【数据类型】string 【是否必选】否 【默认值】无 |
rightButtonFontSize | 用于设置右侧按钮字体的大小,单位fp 【数据类型】number 【是否必选】否 【默认值】16 |
isOpenLog | 是否开启log 【数据类型】boolean 【是否必选】否 【默认值】false |
backIconResource | 用于设置返回图标的资源 【数据类型】Resourse 【是否必选】否 【默认值】$r('app.media.ali_feedback_icon_back_white') |
SDK 初始化
SDK初始化接口并非强制要求在应用启动时进行,可在实际使用前调用。
init(context: Context, config: InitConfig)
用法:
FeedbackAPI.init(getContext(), config)
打开用户反馈页面
在确认参数配置无误后,可打开用户反馈页面接口,以访问用户反馈页面。
openFeedback(success?: () => void, fail?: (info: string, code?: number) => void)
用法:
1.打开反馈页面:
FeedbackAPI.openFeedback()
2.打开反馈页面,并提供结果回调:
FeedbackAPI.openFeedback(() => {
//打开成功
}, (info, code) => {
//打开失败
promptAction.showToast({ message: `code:${code},info:${info}` })
})
获取反馈未读消息数
获取反馈未读消息数接口。
getFeedbackUnreadCount(success: (count: number) => void, fail: () => void)
用法:
FeedbackAPI.getFeedbackUnreadCount((count : number) => {
promptAction.showToast({ message: "未读消息数为:" + count })
}, () => {
promptAction.showToast({ message: "获取未读消息数失败" })
})
设置用户默认联系方式
设置用户默认联系方式的接口,允许将用户的联系方式传递至反馈页面,同时用户也可以手动修改该联系方式。
setDefaultUserContactInfo(contractInfo: string)
用法:
FeedbackAPI.setDefaultUserContactInfo(“1300000XXXX”);
设置用户昵称
设置用户昵称的接口,使用户在反馈信息时能够携带该昵称,最终可在控制台的反馈会话中查看。
setUserNick(nickName: string)
用法:
FeedbackAPI.setUserNick("xxx");
设置反馈消息扩展参数
设置反馈消息扩展参数接口,开发者可添加自定义扩展信息。
setAppExtInfo(extInfo: string)
用法:
let ext = `{"key":"value"}`
FeedbackAPI.setAppExtInfo(ext)
扩展参数需要是满足json格式的字符串
权限
用户首次执行授权操作时,SDK会申请系统权限。
开发者可以在此注册回调监听,在SDK申请权限之前,提前说明权限用途。
setPermissionInterrupt(action: string, interrupt: IPermissionRequestInterrupt)
用法:
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()
}
}
)
}
用户首次拒绝权限后,如果再次申请权限,开发者可在此注册回调,以提供文本提示或跳转至系统设置的功能。
setPermissionRationale(permissionRationale: IPermissionRationale)
用法:
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)