隱私協(xié)議對話框 - Shared Package動態(tài)共享包使用
想了解更多關(guān)于開源的內(nèi)容,請?jiān)L問:
一、準(zhǔn)備工作
1、共享包har和hsp文件(自行開發(fā))
qhj_privacy_library.har
qhj_privacy_library-default-signed.hsp
2、安裝共享包har文件(使用方安裝)
D:\xxxDemo\entry> ohpm install ..\qhj_privacy_library.har
二、動態(tài)共享包使用介紹
1、共享包導(dǎo)出一個首選項(xiàng)數(shù)據(jù)庫類和一個Dialog組件
export { PreferencesUtil } from "./utils/PreferencesUtil"
export { CustomDialogPrivacy } from './dialog/CustomDialogPrivacy'
2、PreferencessUtil提供了創(chuàng)建首選項(xiàng)數(shù)據(jù)庫,保存數(shù)據(jù),修改數(shù)據(jù)
export class PreferencesUtil {
createPrivacyPreferences(context)
saveDefaultPrivacy(isAgree: boolean)
saveChangePrivacy(isAgree: boolean)
async getChangePrivacy()
async deleteChangePrivacy()
}
3、CustomDialogPrivacy對話框提供更改標(biāo)題,文本,本地html或遠(yuǎn)程html文件配置
// 隱私協(xié)議標(biāo)題
private title?: string = '協(xié)議和隱私政策提示'
// 前輟隱私協(xié)議信息
private prefixMessage?: string = '感謝您選擇xxx元服務(wù)!我們非常重視您....'
// 后輟隱私協(xié)議信息
private suffixMessage?: string = '的全部內(nèi)容。'
// 隱私協(xié)議信息,點(diǎn)擊可以跳轉(zhuǎn)
private privacyMessage?: string = '《協(xié)議與隱私政策》'
// 本地html文件或http和https返回html文件
private localHtml?: boolean = true
// 隱私協(xié)議URL 支持本地html或http和https返回html
private urlPage?: string = ""
三、使用方如何調(diào)用
1、在EntryAbility.ts的onCreate初始化首選項(xiàng)數(shù)據(jù)
import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();
onCreate(want, launchParam) {
// 創(chuàng)建首選項(xiàng)數(shù)據(jù)庫
preferencesUtil.createPrivacyPreferences(this.context);
// 設(shè)置隱私協(xié)議默認(rèn)不同意
preferencesUtil.saveDefaultPrivacy(false);
}
2、在Index.ets頁面調(diào)用共享包自定義Dialog
import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();
// 開始顯示隱私協(xié)議對話框
/**
* 如果localHtml參數(shù)為true,urlPage參數(shù)為空,顯示默認(rèn)隱私協(xié)議
* 如果localHtml參數(shù)為true,urlPage參數(shù)不為空,顯示urlPage參數(shù)本地html文件
* 如果localHtml參數(shù)為false,urlPage參數(shù)為空,顯示默認(rèn)隱私協(xié)議
* 如果localHtml參數(shù)為false,urlPage參數(shù)不為空,顯示urlPage參數(shù)http或https返回html文件
*/
privacyDialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialogPrivacy({
localHtml: true,
urlPage: 'privacy.html'
// urlPage: 'https://id1.cloud.huawei.com/AMW/portal/agreements/userAgreement/zh-cn_userAgreement.html'
}),
autoCancel: false,
alignment: DialogAlignment.Center,
customStyle: true
})
onPageShow() {
console.info('xx onPageShow 顯示隱私協(xié)議')
preferencesUtil.getChangePrivacy().then((value) => {
console.info(`xx onPageShow 獲取隱私協(xié)議狀態(tài):${value}`)
if (!value) {
this.privacyDialogController.open()
}
})
}
onPageHide() {
console.info(`xx Index -> onPageHide Close Start`)
this.privacyDialogController.close()
console.info(`xx Index -> onPageHide Close End`)
}
aboutToDisappear() {
console.info(`xx Index -> aboutToDisappear`)
delete this.privacyDialogController
this.privacyDialogController = null
}
// 結(jié)束顯示隱私協(xié)議對話框
四、補(bǔ)充內(nèi)容
1、跨包頁面路由跳轉(zhuǎn)
若想在library模塊中的Dialog點(diǎn)擊文本跳轉(zhuǎn)到隱私協(xié)議頁面(路徑為:library/src/main/ets/pages/PrivacyPage.ets),那么可以在Dialog的代碼(library模塊下的CustomDialogPrivacy.ets,路徑為:qhj_privacy_library/src/main/ets/dialog/CustomDialogPrivacy.ets)里這樣使用:
.onClick(() => {
this.controller.close()
router.pushUrl({
url: '@bundle:com.xxx.study/qhj_privacy_library/ets/pages/PrivacyPage',
params: {
localHtml: this.localHtml,
pageUrl: this.urlPage
}
}).then(() => {
console.info("xx push page success");
}).catch(err => {
console.error(`xx pushUrl failed, code is ${err.code}, message is ${err.message}`);
})
})
其中router.pushUrl方法的入?yún)⒅衭rl的內(nèi)容為:
'@bundle:com.xxx.study/qhj_privacy_library/ets/pages/PrivacyPage'
url內(nèi)容的模板為:
'@bundle:包名(bundleName)/模塊名(moduleName)/路徑/頁面所在的文件名(不加.ets后綴)'
2、應(yīng)用內(nèi)HSP開發(fā)指導(dǎo)
3、應(yīng)用間HSP的調(diào)試方式
開發(fā)者本地調(diào)試應(yīng)用間HSP相關(guān)的功能時,可以通過相關(guān)指令本地完成應(yīng)用間HSP的分發(fā),主要步驟如下:
- 獲取到應(yīng)用間HSP的安裝包。
- 通過指令先安裝應(yīng)用間HSP的安裝包。
hdc install qhj_privacy_library-default-signed.hsp
通過指令后安裝開發(fā)者自身的應(yīng)用hap。
hdc install library_privacy-demo.hap
啟動開發(fā)者自身的應(yīng)用,調(diào)試相關(guān)功能。
注意:步驟2和步驟3不可以顛倒,否則會由于缺少必要的應(yīng)用間HSP
導(dǎo)致開發(fā)者的應(yīng)用安裝失敗。
4、打包HSP和HAP注意事項(xiàng)
打包HSP和HAP用手工簽名,也就是不能用自動簽名,如果生成HSP包時用自動簽名,生成HAP包時也是用自動簽名,安裝時,就會提示簽名不一致。生成簽名證書請看官方文檔:
五、總結(jié)
通過開發(fā)隱私協(xié)議對話框動態(tài)共享包,學(xué)習(xí)到了跨包頁面路由跳轉(zhuǎn),HSP動態(tài)共享包開發(fā)、引用和調(diào)試,同時也為以后App上架做好準(zhǔn)備工作,這樣以后開發(fā)的項(xiàng)目都可以引用這個隱私協(xié)議共享包,大大縮小開發(fā)時間和成本。