HarmonyOS鸿蒙Next中如何配置应用的隐私政策?
HarmonyOS鸿蒙Next中如何配置应用的隐私政策? 隐私政策是应用上架的必需项,本文介绍隐私政策的内容要求、配置方式、以及如何确保隐私政策链接可访问和内容完整。
更多关于HarmonyOS鸿蒙Next中如何配置应用的隐私政策?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
一、为什么必须配置?
华为应用市场审核要求:
首次启动必须展示隐私政策弹窗
用户同意后才能使用应用
必须明确说明数据收集和使用方式
不合规直接拒审
二、manifest.json 配置
{
"app-plus": {
"privacy": {
"prompt": "template",
"template": {
"title": "用户协议与隐私政策",
"message": "请你务必审慎阅读、充分理解\"用户协议\"和\"隐私政策\"各条款。<br/>你可阅读<a href=\"https://xxx.com/agreement.html\">《用户协议》</a>和<a href=\"https://xxx.com/privacy.html\">《隐私政策》</a>了解详细信息。",
"buttonAccept": "同意并继续",
"buttonRefuse": "不同意"
}
},
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>"
]
}
}
}
}
三、自定义隐私弹窗(推荐)
1. 创建隐私弹窗组件
<!-- components/privacy-dialog/privacy-dialog.vue -->
<template>
<view class="privacy-mask" v-if="visible">
<view class="privacy-dialog">
<text class="title">用户协议与隐私政策</text>
<scroll-view class="content" scroll-y>
<text class="text">
欢迎使用「养生源」!我们非常重视您的隐私保护。在使用我们的服务前,请您仔细阅读
<text class="link" @click="openAgreement">《用户协议》</text>
和
<text class="link" @click="openPrivacy">《隐私政策》</text>
的全部内容。
</text>
<text class="text" style="margin-top: 20rpx;">
我们将严格按照上述协议为您提供服务,保护您的个人信息安全。
</text>
<text class="subtitle">我们可能收集的信息:</text>
<text class="text">• 健康数据(血压、血糖等,仅存储在本地)</text>
<text class="text">• 设备信息(用于适配和优化)</text>
<text class="text">• 使用记录(用于改进服务)</text>
</scroll-view>
<view class="buttons">
<button class="btn-refuse" @click="handleRefuse">不同意</button>
<button class="btn-accept" @click="handleAccept">同意并继续</button>
</view>
</view>
</view>
</template>
<script>
export default {
props: {
visible: {
type: Boolean,
default: false
}
},
methods: {
handleAccept() {
uni.setStorageSync('privacy_agreed', true)
uni.setStorageSync('privacy_agreed_time', Date.now())
this.$emit('accept')
},
handleRefuse() {
uni.showModal({
title: '提示',
content: '您需要同意隐私政策才能使用本应用',
showCancel: false,
success: () => {
// 退出应用
// #ifdef APP-PLUS
plus.runtime.quit()
// #endif
}
})
},
openAgreement() {
uni.navigateTo({ url: '/pages/webview/index?url=https://xxx.com/agreement.html' })
},
openPrivacy() {
uni.navigateTo({ url: '/pages/webview/index?url=https://xxx.com/privacy.html' })
}
}
}
</script>
<style scoped>
.privacy-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.6);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
.privacy-dialog {
width: 600rpx;
background: #fff;
border-radius: 24rpx;
padding: 40rpx;
}
.title {
font-size: 36rpx;
font-weight: bold;
text-align: center;
margin-bottom: 30rpx;
}
.content {
max-height: 500rpx;
}
.text {
font-size: 28rpx;
color: #666;
line-height: 1.6;
}
.link {
color: #6BBF59;
}
.subtitle {
font-size: 28rpx;
font-weight: bold;
margin: 20rpx 0 10rpx;
}
.buttons {
display: flex;
margin-top: 40rpx;
gap: 20rpx;
}
.btn-refuse {
flex: 1;
background: #f5f5f5;
color: #666;
border: none;
border-radius: 40rpx;
font-size: 28rpx;
}
.btn-accept {
flex: 1;
background: #6BBF59;
color: #fff;
border: none;
border-radius: 40rpx;
font-size: 28rpx;
}
</style>
2. 在 App.vue 中使用
// App.vue
onLaunch() {
this.checkPrivacy()
},
methods: {
checkPrivacy() {
const agreed = uni.getStorageSync('privacy_agreed')
if (!agreed) {
// 跳转到隐私政策页面或显示弹窗
uni.reLaunch({ url: '/pages/privacy/index' })
}
}
}
四、隐私政策页面内容模板
隐私政策
更新日期:2024年XX月XX日
生效日期:2024年XX月XX日
一、我们收集的信息
1.1 您主动提供的信息
- 健康数据:血压、血糖、体重等(仅存储在本地设备)
- 签到记录、学习记录
1.2 自动收集的信息
- 设备信息:设备型号、操作系统版本
- 应用使用数据:功能使用频率、崩溃日志
二、我们如何使用信息
- 提供健康管理服务
- 改进和优化应用功能
- 保障应用安全稳定运行
三、信息存储
- 所有健康数据仅存储在您的本地设备
- 我们不会将您的数据上传至服务器
- 您可随时删除本地数据
四、信息安全
我们采取合理的安全措施保护您的信息安全。
五、您的权利
- 查看、修改、删除您的数据
- 撤回同意
- 注销账户
六、联系我们
如有疑问,请联系:xxx@xxx.com
五、权限说明配置
在应用市场后台填写权限用途说明:
| 权限 | 用途说明 |
|---|---|
| 存储权限 | 用于保存健康数据和应用缓存 |
| 网络权限 | 用于获取养生知识内容更新 |
| 通知权限 | 用于发送健康提醒通知 |
| 相机权限 | 用于扫描二维码(如有) |
六、审核要点
必须做到:
✅ 首次启动展示隐私弹窗
✅ 用户可选择"同意"或"不同意"
✅ 不同意时不能强制使用
✅ 提供完整的隐私政策文档
✅ 说明每个权限的具体用途
✅ 提供联系方式
常见拒审原因:
❌ 没有隐私弹窗
❌ 只有"同意"按钮,没有"拒绝"选项
❌ 隐私政策内容过于简单
❌ 权限申请与实际功能不符
❌ 收集了未声明的数据
快速检查清单
□ manifest.json 配置了 privacy
□ 首次启动显示隐私弹窗
□ 有"同意"和"不同意"两个按钮
□ 隐私政策文档完整
□ 用户协议文档完整
□ 权限用途说明清晰
□ 提供了联系方式
□ 数据存储方式说明清楚
一句话:首次启动弹窗 + 完整隐私文档 + 权限说明 = 审核通过。
在HarmonyOS Next中,配置应用隐私政策主要通过以下步骤实现:
-
在项目的
resources/base/profile目录下创建app.json5文件,声明应用权限和隐私政策链接。 -
在
app.json5文件的app字段内,使用privacyPolicyUrl属性指定隐私政策的网络访问地址。 -
确保应用在首次启动或相关功能首次被使用时,通过系统提供的弹窗或界面,向用户清晰展示隐私政策内容并获取用户同意。
此配置是应用上架应用市场的必要条件。
在HarmonyOS Next中,配置应用隐私政策是上架应用商店的关键合规步骤,主要通过应用配置文件(module.json5)和资源文件进行声明。
核心配置步骤如下:
-
在
module.json5中声明隐私政策链接 在module.json5文件的module字段下,添加metadata配置项,用于声明隐私政策。示例如下:{ "module": { ... "metadata": [ { "name": "ohos.module.privacy", "value": "$string:privacy_policy" } ] } }其中,
value的值$string:privacy_policy指向资源文件中定义的字符串,该字符串应为完整的、可公开访问的隐私政策URL。 -
在资源文件中定义具体URL 在
resources/base/element/string.json文件中,定义上一步引用的字符串资源,其值就是你的隐私政策网页地址。{ "string": [ { "name": "privacy_policy", "value": "https://www.yourdomain.com/privacy.html" } ] }
关键要求与注意事项:
- 内容要求:隐私政策内容必须真实、完整、清晰,明确说明应用收集的用户数据类型、目的、方式、存储与保护措施、用户权利(如访问、更正、删除)以及数据共享情况等。
- 链接可访问性:配置的URL必须稳定、有效,且在任何网络环境下(特别是中国大陆地区)可正常访问。建议使用HTTPS协议以确保安全性。
- 内容完整性:该链接指向的页面应是一个独立的、完整的隐私政策文档,不应是应用内嵌页面或需要登录才能访问的内容。系统或应用商店审核时会直接访问此链接进行核验。
- 多语言支持:如果应用支持多语言,应在对应语言的资源文件(如
resources/zh-CN/element/string.json)中提供相应语言的隐私政策URL。
验证方式:
开发完成后,你可以通过hdc shell工具连接设备,使用aa dump -d [你的BundleName]命令查看应用的详细信息,确认metadata中声明的隐私政策URL已正确配置并解析。
通过以上配置,即可满足HarmonyOS Next应用在隐私政策声明方面的基本要求,确保应用符合规范,顺利通过上架审核。

