構造初始化配置對象
構造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)