隐私协议对话框 - Shared Package动态共享包使用

数据库 其他数据库
通过开发隐私协议对话框动态共享包,学习到了跨包页面路由跳转,HSP动态共享包开发、引用和调试,同时也为以后App上架做好准备工作,这样以后开发的项目都可以引用这个隐私协议共享包,大大缩小开发时间和成本。

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

一、准备工作

1、共享包har和hsp文件(自行开发)

qhj_privacy_library.har
qhj_privacy_library-default-signed.hsp

2、安装共享包har文件(使用方安装)

D:\xxxDemo\entry> ohpm install ..\qhj_privacy_library.har

二、动态共享包使用介绍

1、共享包导出一个首选项数据库类和一个Dialog组件

export { PreferencesUtil } from "./utils/PreferencesUtil"
export { CustomDialogPrivacy } from './dialog/CustomDialogPrivacy'

2、PreferencessUtil提供了创建首选项数据库,保存数据,修改数据

export class PreferencesUtil {
    createPrivacyPreferences(context)
    saveDefaultPrivacy(isAgree: boolean)
    saveChangePrivacy(isAgree: boolean)
    async getChangePrivacy()
    async deleteChangePrivacy()
}

3、CustomDialogPrivacy对话框提供更改标题,文本,本地html或远程html文件配置

// 隐私协议标题
private title?: string = '协议和隐私政策提示'
// 前辍隐私协议信息
private prefixMessage?: string = '感谢您选择xxx元服务!我们非常重视您....'
// 后辍隐私协议信息
private suffixMessage?: string = '的全部内容。'
// 隐私协议信息,点击可以跳转
private privacyMessage?: string = '《协议与隐私政策》'
// 本地html文件或http和https返回html文件
private localHtml?: boolean = true
// 隐私协议URL 支持本地html或http和https返回html
private urlPage?: string = ""

三、使用方如何调用

1、在EntryAbility.ts的onCreate初始化首选项数据

import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();

onCreate(want, launchParam) {
    // 创建首选项数据库
    preferencesUtil.createPrivacyPreferences(this.context);
    // 设置隐私协议默认不同意
    preferencesUtil.saveDefaultPrivacy(false);
  }

2、在Index.ets页面调用共享包自定义Dialog

import { CustomDialogPrivacy,PreferencesUtil } from 'qhj_privacy_library'
let preferencesUtil = new PreferencesUtil();

  // 开始显示隐私协议对话框
  /**
   * 如果localHtml参数为true,urlPage参数为空,显示默认隐私协议
   * 如果localHtml参数为true,urlPage参数不为空,显示urlPage参数本地html文件
   * 如果localHtml参数为false,urlPage参数为空,显示默认隐私协议
   * 如果localHtml参数为false,urlPage参数不为空,显示urlPage参数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 显示隐私协议')
    preferencesUtil.getChangePrivacy().then((value) => {
      console.info(`xx onPageShow 获取隐私协议状态:${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
  }
  // 结束显示隐私协议对话框

四、补充内容

1、跨包页面路由跳转

若想在library模块中的Dialog点击文本跳转到隐私协议页面(路径为: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方法的入参中url的内容为:

'@bundle:com.xxx.study/qhj_privacy_library/ets/pages/PrivacyPage'

url内容的模板为:

'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets后缀)'

2、应用内HSP开发指导

应用内HSP开发指导-HSP-共享包-应用程序包基础知识-开发基础知识-入门-HarmonyOS应用开发

3、应用间HSP的调试方式

开发者本地调试应用间HSP相关的功能时,可以通过相关指令本地完成应用间HSP的分发,主要步骤如下:

  1. 获取到应用间HSP的安装包。
  2. 通过指令先安装应用间HSP的安装包。
hdc install qhj_privacy_library-default-signed.hsp

通过指令后安装开发者自身的应用hap。

hdc install library_privacy-demo.hap

启动开发者自身的应用,调试相关功能。
注意:步骤2和步骤3不可以颠倒,否则会由于缺少必要的应用间HSP导致开发者的应用安装失败。

4、打包HSP和HAP注意事项

打包HSP和HAP用手工签名,也就是不能用自动签名,如果生成HSP包时用自动签名,生成HAP包时也是用自动签名,安装时,就会提示签名不一致。生成签名证书请看官方文档:

为应用/服务进行签名-调试HarmonyOS应用/服务-应用/服务调试-DevEco Studio使用指南-工具-HarmonyOS应用开发

五、总结

通过开发隐私协议对话框动态共享包,学习到了跨包页面路由跳转,HSP动态共享包开发、引用和调试,同时也为以后App上架做好准备工作,这样以后开发的项目都可以引用这个隐私协议共享包,大大缩小开发时间和成本。

责任编辑:jianghua 来源: 51CTO 开源基础软件社区
相关推荐

2011-07-01 11:33:00

Qt 模态 非模态

2009-12-29 15:24:48

WPF对话框

2010-08-05 10:42:41

Android开发Android高级编程

2011-07-21 15:50:42

jQuery Mobi页面对话框

2010-01-28 16:55:26

Android对话框

2009-12-11 15:35:50

PHP弹出对话框

2009-12-28 13:47:35

WPF对话框

2009-12-28 14:32:31

WPF窗体对话框

2011-05-20 16:49:21

VB.NET

2011-07-22 15:32:53

iPhone 按钮 对话框

2010-01-11 09:33:32

VB.NET对话框调用

2011-11-23 09:47:36

Winform

2012-12-03 10:47:54

WebJQuery控件

2011-06-02 10:37:02

Android 对话框

2010-01-22 16:27:19

VB.NET关于对话框

2009-09-03 17:44:22

iPhone程序开发

2021-07-11 07:34:23

Windows 11操作系统微软

2011-05-31 10:26:37

Android 对话框

2022-03-02 15:47:57

Dialog组件UI设计鸿蒙

2009-11-03 09:21:26

Visual Stud
点赞
收藏

51CTO技术栈公众号