隱私協(xié)議對(duì)話(huà)框 - Shared Package動(dòng)態(tài)共享包使用
想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):
一、準(zhǔn)備工作
1、共享包har和hsp文件(自行開(kāi)發(fā))
qhj_privacy_library.har
qhj_privacy_library-default-signed.hsp
2、安裝共享包har文件(使用方安裝)
D:\xxxDemo\entry> ohpm install ..\qhj_privacy_library.har
二、動(dòng)態(tài)共享包使用介紹
1、共享包導(dǎo)出一個(gè)首選項(xiàng)數(shù)據(jù)庫(kù)類(lèi)和一個(gè)Dialog組件
export { PreferencesUtil } from "./utils/PreferencesUtil"
export { CustomDialogPrivacy } from './dialog/CustomDialogPrivacy'
2、PreferencessUtil提供了創(chuàng)建首選項(xiàng)數(shù)據(jù)庫(kù),保存數(shù)據(jù),修改數(shù)據(jù)
export class PreferencesUtil {
createPrivacyPreferences(context)
saveDefaultPrivacy(isAgree: boolean)
saveChangePrivacy(isAgree: boolean)
async getChangePrivacy()
async deleteChangePrivacy()
}
3、CustomDialogPrivacy對(duì)話(huà)框提供更改標(biāo)題,文本,本地html或遠(yuǎn)程html文件配置
// 隱私協(xié)議標(biāo)題
private title?: string = '協(xié)議和隱私政策提示'
// 前輟隱私協(xié)議信息
private prefixMessage?: string = '感謝您選擇xxx元服務(wù)!我們非常重視您....'
// 后輟隱私協(xié)議信息
private suffixMessage?: string = '的全部?jī)?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ù)庫(kù)
preferencesUtil.createPrivacyPreferences(this.context);
// 設(shè)置隱私協(xié)議默認(rèn)不同意
preferencesUtil.saveDefaultPrivacy(false);
}
2、在Index.ets頁(yè)面調(diào)用共享包自定義Dialog
import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();
// 開(kāi)始顯示隱私協(xié)議對(duì)話(huà)框
/**
* 如果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é)議對(duì)話(huà)框
四、補(bǔ)充內(nèi)容
1、跨包頁(yè)面路由跳轉(zhuǎn)
若想在library模塊中的Dialog點(diǎn)擊文本跳轉(zhuǎn)到隱私協(xié)議頁(yè)面(路徑為: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)/路徑/頁(yè)面所在的文件名(不加.ets后綴)'
2、應(yīng)用內(nèi)HSP開(kāi)發(fā)指導(dǎo)
3、應(yīng)用間HSP的調(diào)試方式
開(kāi)發(fā)者本地調(diào)試應(yīng)用間HSP相關(guān)的功能時(shí),可以通過(guò)相關(guān)指令本地完成應(yīng)用間HSP的分發(fā),主要步驟如下:
- 獲取到應(yīng)用間HSP的安裝包。
- 通過(guò)指令先安裝應(yīng)用間HSP的安裝包。
hdc install qhj_privacy_library-default-signed.hsp
通過(guò)指令后安裝開(kāi)發(fā)者自身的應(yīng)用hap。
hdc install library_privacy-demo.hap
啟動(dòng)開(kāi)發(fā)者自身的應(yīng)用,調(diào)試相關(guān)功能。
注意:步驟2和步驟3不可以顛倒,否則會(huì)由于缺少必要的應(yīng)用間HSP
導(dǎo)致開(kāi)發(fā)者的應(yīng)用安裝失敗。
4、打包HSP和HAP注意事項(xiàng)
打包HSP和HAP用手工簽名,也就是不能用自動(dòng)簽名,如果生成HSP包時(shí)用自動(dòng)簽名,生成HAP包時(shí)也是用自動(dòng)簽名,安裝時(shí),就會(huì)提示簽名不一致。生成簽名證書(shū)請(qǐng)看官方文檔:
五、總結(jié)
通過(guò)開(kāi)發(fā)隱私協(xié)議對(duì)話(huà)框動(dòng)態(tài)共享包,學(xué)習(xí)到了跨包頁(yè)面路由跳轉(zhuǎn),HSP動(dòng)態(tài)共享包開(kāi)發(fā)、引用和調(diào)試,同時(shí)也為以后App上架做好準(zhǔn)備工作,這樣以后開(kāi)發(fā)的項(xiàng)目都可以引用這個(gè)隱私協(xié)議共享包,大大縮小開(kāi)發(fā)時(shí)間和成本。