Harmony SDK API

构造初始化配置对象

构造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)