HarmonyOS鸿蒙Next中如何配置应用的隐私政策?

HarmonyOS鸿蒙Next中如何配置应用的隐私政策? 隐私政策是应用上架的必需项,本文介绍隐私政策的内容要求、配置方式、以及如何确保隐私政策链接可访问和内容完整。

4 回复

更多关于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中,配置应用隐私政策主要通过以下步骤实现:

  1. 在项目的resources/base/profile目录下创建app.json5文件,声明应用权限和隐私政策链接。

  2. app.json5文件的app字段内,使用privacyPolicyUrl属性指定隐私政策的网络访问地址。

  3. 确保应用在首次启动或相关功能首次被使用时,通过系统提供的弹窗或界面,向用户清晰展示隐私政策内容并获取用户同意。

此配置是应用上架应用市场的必要条件。

在HarmonyOS Next中,配置应用隐私政策是上架应用商店的关键合规步骤,主要通过应用配置文件(module.json5)和资源文件进行声明。

核心配置步骤如下:

  1. module.json5中声明隐私政策链接module.json5文件的module字段下,添加metadata配置项,用于声明隐私政策。示例如下:

    {
      "module": {
        ...
        "metadata": [
          {
            "name": "ohos.module.privacy",
            "value": "$string:privacy_policy"
          }
        ]
      }
    }
    

    其中,value的值$string:privacy_policy指向资源文件中定义的字符串,该字符串应为完整的、可公开访问的隐私政策URL。

  2. 在资源文件中定义具体URLresources/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应用在隐私政策声明方面的基本要求,确保应用符合规范,顺利通过上架审核。

回到顶部