更新记录

1.0.0(2025-12-24) 下载此版本

更新日志

v1.0.0

✨ 新功能

核心功能


平台兼容性

uni-app(4.87)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

lf-auth 隐私合规助手

Version License

专业的 UniApp 隐私合规解决方案,帮助开发者应对国内安卓应用市场(华为、小米、OPPO、vivo 等)和 iOS App Store 的隐私合规要求。

✨ 核心功能

1. 📊 静态扫描

  • SDK 扫描:自动识别 manifest.json 中的高风险 SDK 配置
  • 权限扫描:分析 Android/iOS 权限申请情况
  • 依赖扫描:检测 package.json 中的高风险 NPM 包
  • 代码扫描:扫描源代码中的敏感 API 调用(可选)
  • 风险评分:自动计算隐私合规风险分数

2. 📝 文案生成

  • 隐私政策:根据扫描结果自动生成符合规范的 HTML 隐私协议
  • 用户协议:生成标准用户服务协议模板
  • SDK 清单:生成第三方 SDK 清单,方便应用市场提交
  • 多主题:支持浅色/深色主题

3. 🛡️ 拦截组件

  • 启动拦截:首次启动自动弹出隐私政策
  • SDK 阻断:确保用户同意前不初始化任何 SDK
  • 优雅交互:完善的同意/拒绝流程
  • 全平台支持:支持 App、H5、小程序

🚀 快速开始

1. 在页面中使用隐私拦截组件

App.vue 或首页中引入组件:

<template>
  <view>
    <!-- 隐私拦截弹窗 -->
    <lf-privacy-popup
      :privacy-url="privacyUrl"
      :agreement-url="agreementUrl"
      @agreed="handlePrivacyAgreed"
    />

    <!-- 你的应用内容 -->
    <view>应用主体内容</view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      privacyUrl: "https://yourapp.com/privacy.html",
      agreementUrl: "https://yourapp.com/agreement.html",
    };
  },
  methods: {
    handlePrivacyAgreed() {
      console.log("用户已同意隐私政策,可以初始化SDK了");
      // 在这里初始化各种SDK
      this.initSDK();
    },
    initSDK() {
      // 初始化友盟、极光等SDK
    },
  },
};
</script>

2. 使用扫描功能

import { createScanner } from "@/uni_modules/lf-auth/js_sdk/index.js";

// 读取配置文件
const manifest = require("@/manifest.json");
const packageJson = require("@/package.json");

// 创建扫描器
const scanner = createScanner();

// 执行扫描
const result = scanner.scan({
  manifest,
  packageJson,
});

// 查看扫描结果
console.log("风险评分:", result.riskScore);
console.log("检测到的SDK:", result.sdks);
console.log("检测到的权限:", result.permissions);
console.log("改进建议:", result.suggestions);

3. 生成隐私协议

import { createGenerator } from "@/uni_modules/lf-auth/js_sdk/index.js";

// 创建生成器
const generator = createGenerator({
  companyName: "您的公司名称",
  appName: "您的应用名称",
  contactEmail: "contact@yourcompany.com",
  contactPhone: "400-xxx-xxxx",
  companyAddress: "公司地址",
});

// 生成隐私政策HTML
const privacyHtml = generator.generate(result);

// 生成用户协议
const agreementHtml = generator.generateUserAgreement();

// 生成SDK清单(纯文本)
const sdkListText = generator.generateSDKListText(result.sdks);

// 保存到文件或展示
console.log(privacyHtml);

4. 一键完成扫描和生成

import { scanAndGenerate } from "@/uni_modules/lf-auth/js_sdk/index.js";

const result = scanAndGenerate({
  manifest: require("@/manifest.json"),
  packageJson: require("@/package.json"),
  generatorOptions: {
    companyName: "您的公司名称",
    appName: "您的应用名称",
    contactEmail: "support@example.com",
  },
});

// 获取所有结果
const {
  scanResult, // 扫描结果
  privacyPolicy, // 隐私政策HTML
  userAgreement, // 用户协议HTML
  sdkList, // SDK清单文本
} = result;

📖 API 文档

扫描器 API

createScanner(options)

创建扫描器实例

参数:

  • options (Object) - 可选配置
    • scanManifest (Boolean) - 是否扫描 manifest.json,默认 true
    • scanPackageJson (Boolean) - 是否扫描 package.json,默认 true
    • scanSourceCode (Boolean) - 是否扫描源代码,默认 false

返回: Scanner 实例

scanner.scan(options)

执行完整扫描

参数:

  • options.manifest (Object|String) - manifest.json 内容
  • options.packageJson (Object|String) - package.json 内容
  • options.sourceFiles (Array) - 源文件列表(可选)

返回: ScanResult 对象

ScanResult 对象结构

{
  sdks: [],           // SDK列表
  permissions: [],    // 权限列表
  npmPackages: [],    // NPM包列表
  codeIssues: [],     // 代码问题列表
  riskScore: 0,       // 风险评分 0-100
  suggestions: [],    // 改进建议
  timestamp: '...'    // 扫描时间
}

生成器 API

createGenerator(options)

创建生成器实例

参数:

  • companyName (String) - 公司名称
  • appName (String) - 应用名称
  • contactEmail (String) - 联系邮箱
  • contactPhone (String) - ***(可选)
  • companyAddress (String) - 公司地址(可选)
  • effectiveDate (String) - 生效日期(可选)
  • theme (String) - 主题 'default' | 'dark'
  • includeChildren (Boolean) - 是否包含未成年人保护条款

返回: PrivacyPolicyGenerator 实例

generator.generate(scanResult)

生成隐私政策 HTML

参数:

  • scanResult (Object) - 扫描结果对象

返回: String (HTML 内容)

generator.generateUserAgreement()

生成用户协议 HTML

返回: String (HTML 内容)

generator.generateSDKListText(sdks)

生成 SDK 清单文本

参数:

  • sdks (Array) - SDK 列表

返回: String (纯文本)

组件 API

lf-privacy-popup 组件

Props:

属性 类型 默认值 说明
title String '用户隐私保护提示' 弹窗标题
contentPrefix String ... 内容前缀
contentSuffix String ... 内容后缀
agreeText String '同意并继续' 同意按钮文字
disagreeText String '不同意' 不同意按钮文字
showDisagree Boolean true 是否显示不同意按钮
privacyUrl String '' 隐私政策链接
agreementUrl String '' 用户协议链接
showSdkList Boolean false 是否显示 SDK 列表
sdkList Array [] SDK 列表
exitOnDisagree Boolean true 拒绝后是否退出应用
storageKey String 'lf_privacy_agreed' 存储键名
autoShow Boolean true 是否自动检查并显示

Events:

事件名 说明 回调参数
agree 用户点击同意 -
agreed 用户同意(含已同意过的情况) -
disagree 用户点击不同意 -
show 弹窗显示时 -
hide 弹窗隐藏时 -
privacy-click 点击隐私政策链接 -
agreement-click 点击用户协议链接 -

Methods:

方法名 说明 参数
show() 显示弹窗 -
hide() 隐藏弹窗 -
reset() 重置同意状态(测试用) -

🎯 最佳实践

1. SDK 延迟初始化

export default {
  data() {
    return {
      sdkInitialized: false,
    };
  },
  methods: {
    handlePrivacyAgreed() {
      if (!this.sdkInitialized) {
        // 用户同意后才初始化SDK
        this.initAllSDK();
        this.sdkInitialized = true;
      }
    },
    initAllSDK() {
      // 初始化友盟统计
      // this.initUmeng();
      // 初始化极光推送
      // this.initJPush();
      // 初始化其他SDK...
    },
  },
};

2. 定期更新隐私协议

建议每次发版前重新扫描并生成隐私协议,确保内容与实际情况一致。

3. 应用市场提交

使用生成的 SDK 清单文本直接复制到应用市场的隐私合规填写表单中。

4. 权限申请时机

在用户实际使用相关功能时再申请权限,而不是启动时就申请所有权限。

🛠️ 高级用法

自定义扫描规则

import { Scanner } from "@/uni_modules/lf-auth/js_sdk/scanner.js";

class CustomScanner extends Scanner {
  // 重写或扩展扫描方法
  _scanModules(modules) {
    super._scanModules(modules);
    // 添加自定义扫描逻辑
  }
}

自定义隐私协议模板

修改 generator.js 中的生成方法以适配您的需求。

📋 已支持的 SDK 数据库

插件内置 50+常见 SDK 的风险数据库,包括:

统计分析类: uni 统计、友盟、百度统计、TalkingData、神策、GrowingIO

推送服务类: UniPush、极光推送、个推、华为推送、小米推送

地图定位类: 高德地图、百度地图、腾讯地图

广告服务类: 腾讯广告、穿山甲

社交分享类: 微信 SDK、QQ SDK、微博 SDK

其他: 支付、IM、语音、直播、生物识别等

⚠️ 注意事项

  1. 法律合规性: 本插件生成的隐私协议仅供参考,建议咨询专业法律人士审核
  2. 及时更新: SDK 或权限变更后应重新扫描并更新隐私协议
  3. 真实准确: 确保隐私协议内容与应用实际行为一致
  4. 用户权利: 必须提供账号注销、信息删除等功能
  5. 未成年保护: 如涉及未成年人用户,需额外注意相关条款

让隐私合规变得简单! 🎉

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。