【HarmonyOS开发模板/组件分享 – 用户隐私政策弹窗】

APP以隐私政策弹窗的形式向用户明示收集使用规则,未经用户同意,存在收集Android ID、IMEI的行为。——YonStudio开发 1、在首页加载之前弹出想要在首页加载之前显示隐私政策提示框,需创建一个 privacy.stml 文件放置在项目pages/privacy 目录下。官方提供了对应的文件,只需要放在pages下即可,在页面修改对应内容即可。注意:隐私协议弹窗页面中如果要打开新的页面(隐私详情页),也需要使用本地stml 页面。示例:2、在首页加载之后弹出当应用启动时若检测到 privacy.stml 文件不存在,则会正常加载首页,前端可在首页弹出隐私政策提示框,在用户同意隐私政策协议之前版本和云修复检测会被延后。 阅读详情
  1. 介绍

元服务或应用在上架应用市场时,审核要求在启动界面或登录界面以显著的方式展示隐私政策,提示用户阅读隐私政策。

本篇Codelab介绍了如何使用自定义弹窗设计用户隐私政策弹窗,方便开发者快速集成到自己的工程项目中,满足审核指南要求,提升用户体验。

1.1预览

2环境搭建

我们首先需要完成HarmonyOS开发环境搭建,可参照如下步骤进行。

2.1软件要求

  • DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。

  • HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。

  • 2.2硬件设备

  • 设备类型:华为手机。

  • HarmonyOS系统:HarmonyOS NEXT Developer Beta1及以上。

  • 安装环境

  • 安装DevEco Studio,详情请参考下载和安装软件。

  • 设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,详情请参考配置开发环境。

  • 开发者可以参考以下链接,完成设备调试的相关配置:

    1. 使用真机进行调试

代码结构

本篇Codelab只对核心代码进行解析。

├─entry/src/main/ets
    ├─dialog  // 弹窗组件
        ├─ CommDialog.ets  // 自定义公共弹窗
        ├─ UppDialog.ets  // 隐私政策弹窗
    ├─pages
        ├─ Index.ets  // 首页

自定义弹窗开发

  1. 代码开发

创建CommDialog.ets代码文件。 

@Preview
@Component
export default struct CommDialog {
  private title?: string | Resource = '标题'; // 标题
  private controller?: CustomDialogController;
  private onConfirm: () => void = () => {
  }; // 确认按钮点击事件
  private onCancel?: () => void = () => {
  }; // 取消按钮点击事件
  private confirmText?: string | Resource = '确定'; // 确定按钮文字
  private cancelText?: string | Resource = '取消'; // 取消按钮文字
  @BuilderParam closer: () => void=closerFunc;

  build() {
    Column() {
      Text(this.title)
        .width('100%')
        .fontSize(20)
        .fontColor('#182431')
        .margin({
          bottom: 12
        })

      // 占位
      this.closer();

      Row() {
        // 左边的取消按钮
        Button(this.cancelText)
          .onClick(() => {
            if (!this.controller) {
              return;
            }
            if (this.onCancel) {
              this.onCancel();
            }
            this.controller.close();
          })
          .fontSize(15)
          .height(40)
          .layoutWeight(1)
          .fontColor('#17A98E')
          .backgroundColor('#00000000')

        // 右边的确认按钮
        if (this.onConfirm) {
          Button(this.confirmText)
            .onClick(() => {
              this.onConfirm();
              if (!this.controller) {
                return;
              }
              this.controller.close();
            })
            .fontSize(15)
            .height(40)
            .layoutWeight(1)
            .fontColor('#17A98E')
            .backgroundColor('#00000000')
        }
      }
      .margin({
        top: 12
      })
    }
    .width('100%')
    .padding(24)
    .justifyContent(FlexAlign.Center)
  }
}

@Builder
function closerFunc() {

}

运行效果

隐私政策弹窗开发

  1. 代码开发

创建UppDialog.ets文件。

import common from '@ohos.app.ability.common';
import CommDialog from './CommDialog';

@Preview
@CustomDialog
export default struct UppDialog {
  private onAgree?: () => void; // 点击同意协议时的回调事件
  controller: CustomDialogController = new CustomDialogController({
    builder: UppDialog(),
    autoCancel: true
  });

  build() {
    Flex() {
      CommDialog({
        title: '关于用户隐私政策',
        controller: this.controller,
        confirmText: '同意',
        cancelText: '拒绝',
        onConfirm: () => {
          this.onAgree;
        },
        onCancel: () => {
          (getContext(this) as common.UIAbilityContext).terminateSelf(); // 退出APP
        }
      }) {
        Text() {
          Span('xxxxAPP是一款满足用户xxxx功能的应用,' +
            '为了更好的服务您,在您使用APP过程中,我们将收集您的个人信息。更多信息请查看 ')
            .fontSize(13)
          Span('《隐私政策声明》')
            .fontStyle(FontStyle.Italic)
            .fontSize(13)
            .decoration({ type: TextDecorationType.Underline, color: '#DA4436' })
            .onClick(() => {
              // TODO: 打开查看隐私政策的详细内容(本地page页或远程链接web页)
            })
        }
        .lineHeight(28)
      }
    }
  }
}

运行效果

 

项目示例:HelloWorld

步骤1:创建一个DEMO项目HelloWorld

如果你在已有的项目中增加用户隐私政策弹窗功能,请跳过此步骤。

步骤2:引入弹窗组件

entry/src/main/ets下创建dialog目录,在该目录下添加已开发完成的自定义弹窗文件CommDialog.ets和隐私政策弹窗文件UppDialog.ets。

步骤3:定义方法showUppDialog,弹出隐私政策窗口

在Index.ets代码文件中定义showUppDialog方法,判断用户是否已同意隐私政策,是则不再弹出隐私政策窗口;否则继续弹出。

public showUppDialog(callBack: (agreed: Boolean) => void) {
  // TODO:读取用户是否已同意隐私政策的状态(true:已同意;false:未同意),
  let isOK:Boolean = false;
  // 传给回调函数
  callBack(isOK);
}

步骤4:定义方法agreed,同意隐私政策

在Index.ets代码文件中定义agreed方法,用户点击同意隐私政策时,保存“已同意”的状态。

public  agreed() {
  // TODO:记录已同意用户隐私政策的状态,避免重复弹出隐私政策窗口
  // 保存到本地文件或数据库,建议使用首选项preferences
}

步骤5:定义弹窗构造器变量uppDialogController

该变量类型是CustomDialogController,赋值隐私政策弹窗实例UppDialog。

public uppDialogController: CustomDialogController = new CustomDialogController({
  builder: UppDialog({ onAgree: () => {
    this.agreed()
  } }),
  autoCancel: false
});

步骤6:页面每次显示时,弹出隐私政策窗口

在生命周期回调函数onPageShow中,调用弹出隐私政策窗口的showUppDialog方法。

// 页面显示时,判断用户是否已同意隐私政策
onPageShow() {
  this.showUppDialog((agreed: Boolean) => {
    if (!agreed) {
      this.uppDialogController.open();
    }
  });
}

Android 隐私协议提示弹窗实现 渠道要求在用户同意隐私协议之前,App 不可以调用相关敏感 API,同意后方能进行后续进程,参考网上的资料自己做了个demo【实现启动时检测是否需要弹出提示框,同意进入游戏,不同意退出游戏,第二次进入时,若之前同意过直接进入游戏】。创建加载页MyLaunchActivity,实现检测是否需要弹出隐私提示框以及通过WebView查看隐私协议。创建弹窗MyPrivacyDialog,实现弹窗内容的展示,点击事件的处理。 阅读详情

相关推荐

【商业化】微软商店应用上架必备:免费快速生成并托管隐私政策(Privacy Policy)

许多在线生成工具可以帮助你快速生成符合标准的隐私政策。输入应用的基本信息后,这些工具会生成适合你应用的隐私政策文本。TermsFeed:支持自定义隐私政策生成,可以创建符合 Microsoft Store 要求的隐私政策。生成隐私政策后,需要将其托管到一个支持 HTTPS 的网址上。Privacy Policies:提供隐私政策生成服务,支持免费和付费版本。GetTerms:一个简便的隐私政策生成器,适合个人开发者和小型应用。生成隐私政策文本,将其复制下来或导出为 HTML 文件。2. 托管隐私政策页面。

每日出拳老爷子的博客 2574

Android 实现隐私政策提示弹窗(完整版)

隐私协议弹窗 preferences

kim5659的博客 1万+

【uniapp 配置启动页面隐私弹窗】

根据工业和信息化部关于开展APP侵害用户权益专项整治要求,App提交到应用市场必须满足以下条件:1.应用启动运行时需弹出隐私政策协议,说明应用采集用户数据2.应用不能强制要求用户授予权限,即不能“不给权限不让用”

前端-CV全粘工程师 1万+

审核问题——首次进入APP展示隐私政策弹窗

首次进入APP展示《隐私政策》弹窗

silence_xz的博客 2056

uniapp 安卓原生隐私政策,首次进入APP弹窗配置

uniapp 安卓原生隐私政策,首次进入APP弹窗配置 应用不得在用户同意隐私政策前,不得提前申请权限收集信息 问题处理

weixin_57844432的博客 1万+

centos7安装Ambari 2.7.5 + HDP3.1.5

准备 1.安装包准备: Ambari2.7.5、HDP31.5、libtirpc-devel: centos7操作系统: 链接:https://pan.baidu.com/s/1vzvio5rAMsbYF0-0vBs5dw 提取码:xij9

kxq的博客 5091

鸿蒙(HarmonyOS)实现隐私政策弹窗

在实现用户协议弹窗时,通常我们会想到使用系统自定义弹窗,并在弹窗中点击跳转到Web页面。但在HarmonyOS中,由于系统弹窗的显示优先级高于其他组件,即使跳转到Web页面,弹窗依然会显示在最上层。为了解决这个问题,我们可以自定义一个组件来模拟弹窗,这样当跳转到Web页面时,Web内容会覆盖这个模拟的弹窗。首先,我们来看程序的入口代码。最外层使用了一个RelativeContainer容器组件,通过showAgreePrivacyPolicy变量控制隐私政策弹窗的显示状态。

安辉 1733

若依(ruoyivue)实现文档在线查看

1、Kkfileview部署 第一步:从kkfileview官方发行版本下载安装包,安装包下载路径: https://gitee.com/kekingcn/file-online-preview/releases, 第二步:解压kkFileView-x.x.x文件(Windows用.zip包,Linux/MacOS用.tar.gz包) 第三步:打开解压后文件夹的bin目录,运行startup脚本(Windows下以管理员身份运行startup.bat,Linux以root用户运行startup.sh) 第四

weixin_46953697的博客 9681

UNIAPP APP下载 首页服务协议和隐私政策弹窗

应用上传应用宝,需要在下载首页展示用户协议和隐私政策弹窗提醒, 以及在应用内有查看的位置, 登录或者注册页面有同意服务协议和隐私政策的提醒. 用户协议和隐私政策弹窗提醒: 1.在uniapp项目manifest.json文件的源码视图中,找到app-plus 2.在app-plus节点下,添加privacy "privacy" : { "prompt" : "template", "template" : { //prompt取

weixin_44948683的博客 8465

笔记汇总 | 斯坦福 CS229 机器学习

本文为斯坦福大学 2014 秋季 CS229 机器学习课程学习笔记本文主体部分转载自黄海广博士,文末已给出,大家有兴趣可以直接访问笔记首页,下载对应课程资料及作业代码。

ReturnTmp的博客 2464

博士申请-考核制经验分享(2)——个人简历

申博过程中一般在联系导师时就将个人简历作为邮件附件,有些学校也会在提交材料或者复试阶段提交个人简历。

weixin_49282401的博客 5527

鸿蒙应用项目分享:我的鸿蒙毕设:基于HarmonyOS的任务看板平台【一】:项目整体介绍

鸿蒙项目初步分享,基于HarmonyOS的任务看板平台设计与实现,项目是我的毕业设计,此文分享APP内样式,后续逐步分享代码。基于精益思想,看板方法,参考飞书APP中的板栗看板和Trello应用。JAVA实现大部分内容。分享内容仅用于个人学习。...

Felix Cai 的世界 1万+

【军标】《军用软件计价规范(试行)》和GJB 10162-2021《军用软件计价功能项识别方法》-费用标准解读系列37

2021年2月1日实施的《军用软件计价规范(试行)》(替代了2019年版本)以及2021年3月1日实施的《军用软件计价功能项识别方法》(GJB 10162-2021),是我们平时在军用软件造价咨询中进行软件规模度量、计价和审价的主要依据。《军用软件计价规范(试行)》(4号文)的附件1为《军用软件功能规模度量方法》,即4号文本身包含对软件规模测试的方法(功能点方法主要参考NESMA等国际标准)、规模度量过程、功能点计数和计算规则等相关说明。(四)软件研发费用=软件研发工作量x软件研发人月综合费率。

xiaosenyouli的博客 6125

[Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发

[Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发 启动页界面开发、首次启动时的启动页用户协议与隐私政策弹窗,只要不点击同意每次打开都会显示弹窗,同意后立即跳转到主界面,当下次再进入软件就是两秒后自动跳转到主界面。

杰孑的博客 5253

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 823

redhawk:avgTW maxTW minTW minWC的区别

分析dynamic ir drop报告时会遇到这几个值,avgTW maxTW minTW minWC,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 695

【Google Play】Android 应用隐私政策 ( 生成隐私政策 | HTML 隐私政策模板 | Markdown 隐私政策模板 )

一、生成隐私政策、 二、HTML 隐私政策模板、 三、Markdown 隐私政策模板

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 8545

044.树莓派4B部署YOLO:从系统烧录到模型运行

《树莓派4B部署YOLOv8实战笔记》摘要:本文详细记录了在ARM架构树莓派4B上部署YOLOv8的全流程。关键点包括:必须使用64位系统并手动编译OpenCV(禁用FFMPEG、开启NEON优化);模型需在x86转换为TFLite格式(分辨率不超过320×320);推理代码使用tflite_runtime替代TensorFlow以减少内存占用;针对USB摄像头卡顿、内存泄漏等典型问题给出了解决方案。

2603_95664987的博客 169

如何制作App隐私政策html

如何制作App隐私政策html

漫—流的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

鸿蒙ets开发App,开屏页,数据保存,隐私协议弹窗,广告页

初学鸿蒙的知识,在gitee上面看到别人写的demo,回看一下,再相应的修改,了解一下里面涉及的知识,顺便记录一下。里面的内容有转载也有自己的。感谢这么多的开发者无私的分享。 开屏页,每个app启动时的第一个页面,第一次安装时会显示让用户查看的隐私协议弹窗 LauncherPage启动页 import common from '@ohos.app.ability.common'; import preferences from '@ohos.data.preferences'; import rout

weixin_43807186的博客 2329

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

小程序添加隐私保护指引弹框(包含配置隐私保护指引方法)

9 月 15 号之后涉及隐私的接口将无法使用,严重影响业务逻辑。开发者要做的就是做一个弹窗提示用户阅读隐私保护指引,在用户点击“同意”按钮之后同步给微信,之后微信才允许开发者调用隐私接口,并且还会检测用户是否点击了按钮。

m0_47791238的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

独立游戏 - 隐私政策生成器

作为独立游戏开发者,生存空间,可以说是越来越苛刻了(当然了,越来越规范是好事情) 最近参加AR的比赛,提交程序,需要隐私政策,经过一番折腾,找到了解决方案。 https://privacy.1ts.fun/ 这是一个隐私政策生成器,根据自己的需要,选择选项,然后生成,并导出txt。 然后用word简单编辑,调整下格式,导出PDF,一份隐私政策说明就????了 ...

未配妥剑 已入江湖 861

隐私政策生成器

隐私政策生成器

80岁小姑娘的博客 817

应用隐私保护

随着移动终端及其相关业务(如移动支付、终端云等)的普及,用户隐私保护的重要性愈发突出。隐私保护是尊重个人权利、增加用户信任、确保个人信息安全的重要措施,也是法律法规的要求。个人信息的泄露和滥用可能导致不良后果,如个人诈骗、身份盗用、恶意广告等。隐私是用户的基本权利,HarmonyOS非常重视用户的隐私。通过隐私保护措施,可以降低个人信息遭到滥用的风险,保护用户的财产和利益。实施良好的隐私保护措施不仅有助于建立良好的用户关系,还有助于保护用户和企业的利益。

sinat_34896766的博客 1680

APP启动页隐私弹窗实现说明

最近审核严禁,腾讯应用市场要求APP在启动页增加隐私政策和用户协议,用户从腾讯应用市场上下载APP,第一加载的时候弹窗,不然审核就不给过,样式大概如下 用户若点击不同意的时候,无法进入APP内部。下面把实现的代码贴上来 1、加个判断,其他应用市场不需要弹窗 private boolean showDialog = true;//腾讯应用市场显示隐私说明弹窗 设置为true privat...

yun382657988的博客 1万+
上一篇: 【时间盒子】-【14.任务编辑】修改删除任务
下一篇: 【NEXT】P70升级了纯血鸿蒙next 5.0,可是我女儿“不开心”……
鸿花粉
博客等级 码龄20年 321粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿花粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值