【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万+

美团外卖 mtgsig 1.2 逆向工程与补环境实战指南

本文深入解析了美团外卖核心风控参数mtgsig 1.2的生成机制与逆向实战。通过拆解其复杂的JSON结构,揭示了设备指纹、环境信息加密等关键字段。重点阐述了在Node.js中模拟浏览器环境(补环境)的核心方法,包括DOM/BOM对象、本地存储及Canvas/WebGL等高级指纹的模拟技巧,为安全研究和合规自动化测试提供了一套完整的技术指南。

uber9的博客 410

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

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

安辉 1733

如何理解反步法设计控制器?

假设以二阶系统为例,被控对象的系统状态方程为: 基于反步控制的具体方法如下: 1.1步骤一 定义期望状态为xd,状态误差e1,为: e1=x1-xd; 则e1的导数为: 1.2步骤二 定义虚拟控制量为: e2定义为: 1.3步骤三 定义Lyapunov能量函数为: 1.4步骤四 定义总Lyapunov能量函数为: 因此设计的控制律为: 设计c>0,则: 满足Lyapunov的稳定性判定条件...

weixin_42736130的博客 2万+

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

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

weixin_44948683的博客 8465

门控时钟(clock gating)的DFT设计

在数字IC芯片中,时钟树的功耗占比可能高达30%,因此一般会采取门控时钟的方式来降低该部分的功耗。所谓门控时钟,就是在芯片实际工作过程中,有些信号或者功能并不需要一直开启,那么就可以在它们不用的时候将其时钟信号关闭。这样一来信号不再翻转,从而能够有效减少动态功耗。 目前门控时钟都采用集成门控时钟单元(ICG,integrated clock gating cell),其结构如下。由一个latch和一个与门(也有的是或门)组成,可以过滤掉EN信号中的毛刺。一般的工艺库中都会有专门的ICG以供调用。 插入IC

weixin_44746697的博客 3874

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战)

本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。

weixin_28309571的博客 977

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

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

Felix Cai 的世界 1万+

QGis软件 —— 5、QGis增加线,并对线进行绘制、旋转、缩放、移动等基本操作

QGis软件 —— 5、QGis增加线,并对线进行绘制、旋转、缩放、移动等基本操作

8245

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

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

杰孑的博客 5253

OpenClaw人人养虾:接入Synology Chat

Synology Chat 是群晖 NAS(Network Attached Storage,网络附属存储)内置的即时通讯应用。

王国平的博客 780

安装keil软件时安装不了芯片包怎么回事?芯片包安装路径放在Keill里的packs下面,弹框提示报错:Errors retumned from cpackget...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2207

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

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

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

FanucROBOGUIDE软件二次开发:使用ROBOGUIDEAPI进行编程

菜单栏:位于界面顶部,提供文件、编辑、视图、插入、格式、工具、窗口和帮助等选项。工具栏:包含常用的工具按钮,如新建、打开、保存、运行、停止、机器人控制等。工作站视图:显示工作站的3D模型,用户可以在这里放置机器人、工件、工具和其他设备。机器人控制面板:用于控制机器人运动,包括手动移动、程序编辑和运行。程序编辑器:在这里可以编写和编辑机器人程序,支持Fanuc的R-30iB Plus和R-30iB控制柜的程序格式。状态栏:显示当前工作站的状态信息,如机器人位置、程序状态等。

kkchenjj的博客 1409

如何制作App隐私政策html

如何制作App隐私政策html

漫—流的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

weixin_43807186的博客 2329

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

m0_47791238的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

作为独立游戏开发者,生存空间,可以说是越来越苛刻了(当然了,越来越规范是好事情) 最近参加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、付费专栏及课程。

余额充值