SuperAPI AI 工具集

analytics-and-consent

数据与分析

查看项目

更新于 10-18 18:01

技能介绍

用途

这个技能用于在 Expo 应用中接入产品统计分析,同时让同意流程可以经得起代码审查与商店审核:在用户未表示同意之前,任何数据都不离开设备,厂商 SDK 也只在用户同意后才存在;每个事件都来自一个带类型的事件目录,且从结构上不允许携带个人数据;除非应用有意选择加入 Apple ATT,否则分析不进行跟踪;App Store 与 Google Play 的隐私回答则由代码所依据的同一份约定生成。技能附带两个零依赖检查器,用于在真实代码上验证这些规则。

主要能力

  • 同意门控:同意状态初始为 'unknown',在 setConsent('granted') 回答当前问题之前,createAnalytics 会丢弃所有事件,只在同意后才调用厂商适配器 createSdk。
  • 可撤回:撤回同意时先 reset()(清空匿名/设备 ID 与未发送队列),再 optOut();若会话中没有运行 SDK 则用 clearSdkStorage;forget() 还会清除已保存的答案,用于账号删除。
  • 版本化询问:当 collects、sdk 或 endpoints 变化时提升 ANALYTICS_CONSENT_VERSION,旧答案视为 'unknown';约定的 consent: { version, covers } 记录该版本覆盖内容的指纹。
  • 默认不跟踪:不依据 UMP 的 canRequestAds 推断分析同意;不改用第二处 ATT 导入,跟踪适配器只从 'authorized' 答案获知是否允许跟踪。
  • 单一厂商单一导入:sdk 是唯一安装的分析包,只有对应适配器文件导入它,适配器只在 createSdk 内惰性创建;禁止自启动 SDK 和会话回放。
  • 明确的隐私选项:示例以 PostHog 为例,写明 defaultOptIn: false、personProfiles: 'never'、disableGeoip、无生命周期事件、无自动捕获、无 PostHogProvider、错误自动捕获关闭、显式 host、disableRemoteFeatureFlags 等。
  • 类型化事件目录:ANALYTICS_EVENTS 为纯数据,事件名 snake_case、不超过 40 字符、不占用厂商保留名;通过 track({ name: '<event>', props }) 发送。
  • 无个人数据:属性仅限枚举、布尔、分桶计数或路由,禁止自由文本;sanitizeEvent 在运行时丢弃不匹配的属性。
  • 屏幕视图使用路由模式(如 tasks/[id]),不发送 usePathname()、搜索参数或 URL。
  • 默认匿名:除非约定声明 identifies: true 并声明关联用户 ID,否则不调用 identify、alias 或人物属性。
  • 按构建区分项目:开发与预览关闭(或 test),生产在线(或关闭);密钥与 host 来自构建环境,经 analyticsExtra() 写入 expo.extra,再由 readAnalyticsExtra 读取。
  • 商店声明来自约定:collects 覆盖目录、SDK 与身份设置所隐含的内容,写入隐私清单与 contracts/privacy.json,由开发者填入 App Store Connect 与 Play 数据安全表单。
  • 儿童应用不接入第三方分析:audience: 'child-directed' 意味着 sdk: 'none'、不跟踪、不 identify。
  • 分析静默失败:端口方法不抛出或拒绝,失败写入错误日志,SDK 启动期间最多缓存 100 个事件。

使用方式

先与开发者确认:厂商(默认 PostHog)、区域(endpoints)、受众、是否识别用户、是否有 SDK 跟踪;厂商项目、数据留存和处理协议由开发者负责。安装命令:npm install -E posthog-react-native@4.79.1,以及 npx expo install expo-application;并在 contracts/architecture.json 和 ESLint 配置中登记。然后复制模板到其首行指定的路径(分析服务、配置、钩子、脚本、契约等),按应用真实问题编写事件目录,参照示例编写厂商适配器,在根套件注册表 src/services/create-root-kits.ts 中注册 createAnalyticsKit,接线 app.config.ts 与 EAS 环境;接入询问与设置行;从模型处理器通过 useAnalytics() 发送事件;填写 collects 并生成商店声明。运行 Jest 测试:npx jest src/services/analytics src/config/analytics-config.test.ts src/hooks/use-screen-views.test.tsx scripts/analytics --ci --maxWorkers=2。运行检查器:node ${CLAUDE_SKILL_DIR}/scripts/check-analytics.mjs . 与 node ${CLAUDE_SKILL_DIR}/scripts/check-analytics-behaviour.mjs .,修复每个 FAIL 直到两者都输出 RESULT: PASS。

适用场景

适用于 Expo/React Native 应用在产品分析接入时需要满足 Apple 5.1.1(ii)、ePrivacy、GDPR 以及 App Review 1.3/5.1.4、Play Families 等同意与跟踪要求的场景,尤其是希望把同意门控、事件目录、隐私清单和商店声明统一到一份可审查契约中的团队。

限制

各项收费、价格、具体厂商服务条款与法律结论暂未提供。技能以 PostHog 为例,其他厂商需按 references/vendors-and-sdk-facts.md 重新验证。厂商控制台设置、商店表单、隐私政策文本与设备走查需开发者本人完成,代理无法代办。