隐私政策
最后更新:2026-09-24
FishCap 是一款把数据留在你自己手上的应用。没有账号,没有 App 内登录,没有第三方分析 SDK,不做广告追踪,也没有一台存着你鱼获记录的服务器。下面是全部细节。
1. 你的记录存在哪里
鱼获记录、照片、抠图、鱼种、尺寸、钓点与天气,都保存在你的设备本地,并通过 iCloud 私有数据库(你 Apple ID 名下的空间)同步到你的其他设备。同步默认开启且免费。我们无法访问你的 iCloud 私有数据库——这些数据受 Apple 的账号与加密机制保护,不经过我们的服务器。
2. 云端鱼种识别时会发生什么
什么时候发送
你拍下或从相册选中一张照片后,App 先在本机完成抠图,随后自动把照片发去识别,不需要再点一次按钮。以下情况不会发出请求:
- 设备没有联网;
- App 已经知道这台设备的免费识别额度用完,而你没有订阅;
- 本机检查既没找到鱼、也没抠出主体(这时你可以点「强制识别」手动发送)。
此外,对一条已保存但未识别的鱼获点「再次识别」,也会发送一次请求。
发送什么
- 那一张照片:抠好的鱼放在纯灰底上;没抠出主体时是原图。压缩成长边不超过 1024 像素的 JPEG。
- 可选的粗略地区代码(如
na/eu/au/jp/cn/global)和淡水/咸水提示,只用来给候选鱼种排序。 - 你的 App 语言,只影响返回文本的语言。
- 标识符:一个匿名设备标识(由 Apple App Attest 派生的令牌),用来校验设备真实性和统计免费额度;一个可选的 RevenueCat 匿名 app user ID,用来判断订阅状态;以及这条鱼获记录的随机编号,用来避免网络重试时重复扣额度。
GPS 坐标从不上传。照片里的 EXIF 位置也不会随请求发出。
谁处理、保留多久
请求先到 FishCap 自建的 Cloudflare Worker 代理,由它转发给 Google 的 Gemini 模型做识别。FishCap 的代理不保存照片:照片只在处理这一次请求时存在于内存中,转发给 Google 后即被丢弃。为了避免网络重试重复扣额度,一次成功识别的结果(候选鱼种、一句说明、可能的长度估计,不含照片)会以设备为单位、按鱼获记录的随机编号缓存最多 24 小时。
按照 Google 针对付费 Gemini API 的条款,Google 不会用这些请求和回复来改进或训练它的模型,但可能在有限的时间内记录请求内容,仅用于发现违反其禁止使用政策的行为以及法律要求的披露。这部分处理适用 Google 的条款与隐私政策。
3. 我们在服务端保留什么
- 额度计数:以匿名设备标识为键,记录每次识别的时间(约 25 小时后删除,用于每小时/每天上限)和终身识别次数。不含姓名、邮箱、Apple ID、手机号、IP 地址或位置。
- 订阅状态缓存:RevenueCat 对「某个匿名 app user ID 当前是否有有效订阅」的答复,以该 RevenueCat 匿名 app user ID 为键(不是设备标识),约 10 分钟后自动删除。
- 识别结果缓存:见第 2 节,最多 24 小时,不含照片。
- 汇总统计:当模型给出的鱼不在我们的鱼种库里时,以聚合方式记录这个推测的鱼名、地区代码与淡水/咸水提示(Cloudflare Analytics Engine),用来决定该补充哪些鱼种。不含照片、不含设备标识。
- 运行日志:我们的代码写入的日志只包含耗时、模型、首选鱼种与置信度、地区与水域提示、订阅档位、失败原因和请求追踪 id,不含照片、坐标或 IP 地址。日志短期保存,用于排障与防滥用。
- Cloudflare 与 IP 地址:所有请求(包括本网站)都经过 Cloudflare。Cloudflare 在传送请求和生成请求日志(Workers Logs)时会处理你的 IP 地址,这部分日志由 Cloudflare 按其政策短期保存。在注册设备的两个接口上,IP 地址还会被临时用作防刷频率限制的键。FishCap 自己保存的数据(额度计数和各项缓存)中不含 IP 地址。
我们不保留你的鱼获记录、钓点、照片或照片库,也不保留任何可以还原成个人身份的资料。
4. 位置
取得你的授权后,App 在本机使用精确位置来记录钓点、做反向地理编码并取当时的天气。这些结果只写进你自己的记录和你自己的 iCloud,从不发送给 FishCap 的服务器或任何第三方(识别请求里只有第 2 节所说的粗略地区代码)。你可以在 iOS 设置里随时关闭定位权限;关闭后仍可正常记录,只是不自动带上地点和天气。
5. 照片
相机与相册(通过系统照片选择器)只用于你选择的那些照片。照片保留在设备和你自己的 iCloud 中。除第 2 节所述的识别请求外,照片不会上传到任何地方。生成分享卡片时,卡片在本地渲染后交给系统分享面板,默认不显示位置,并且从不写入坐标或 GPS EXIF。
6. 天气
天气来自 Apple WeatherKit。为了取得当地天气,需要把一个位置发给 Apple 的天气服务,这项处理适用 Apple 的隐私政策。天气结果只存在你的记录里。
7. 购买与订阅
购买通过 Apple App 内购买完成,我们看不到你的支付方式、姓名或 Apple ID。凭证由 RevenueCat 处理以确认订阅状态,使用的是 RevenueCat 匿名 app user ID,我们不向其提供邮箱或其他可识别身份的信息。
8. 追踪与分析
FishCap 不接入任何第三方分析或广告 SDK,不读取 IDFA,不做跨 App 或跨网站的追踪,也不会把你的数据与其他来源的数据关联。App 的隐私清单(PrivacyInfo.xcprivacy)中 NSPrivacyTracking 为 false,追踪域名列表为空。
9. 按 Apple 的定义,我们「收集」哪些数据
- 照片(不关联身份、不用于追踪):照片被发去识别时,用于实现识别功能。
- 购买历史(不关联身份、不用于追踪):用于在重装或换机后恢复订阅权益。
- 设备标识(不关联身份、不用于追踪):App Attest 派生的匿名设备标识,用于统计免费额度;以及 RevenueCat 匿名 app user ID,用于判断订阅状态。
精确位置不在收集之列:坐标只留在本机与你的私有 iCloud,从不发给我们或第三方。小组件不含任何网络代码,只读取与主 App 共享的本地快照。
10. 儿童
FishCap 不面向 13 岁以下儿童,也不会有意收集他们的信息。
11. 你的选择与数据删除
- 删除记录:在 App 内删除某条鱼获即可;删除会同步到你的 iCloud。
- 删除全部:删除 App,并在 iOS 设置 → Apple 账户 → iCloud 中删除 FishCap 的 iCloud 数据,即可移除你的记录。
- 权限:相机、相册、定位与通知都可以在 iOS 设置里随时关闭。
- 服务端记录:额度计数以匿名设备标识为键,订阅状态缓存约 10 分钟后自动删除,识别结果缓存最多 24 小时后删除,都不含个人身份信息。如果你希望删除与你设备相关的服务端记录,写信到 willisshan66@gmail.com,我们会处理(删除后该设备的免费额度计数也会一并消失)。
- 视你所在地区的法律,你可能享有访问、更正、删除或导出个人数据的权利。由于我们保存的数据极其有限且不与你的身份关联,多数情况下通过上面的方式即可完成。
12. 数据的跨境处理
识别请求由 Cloudflare 的全球网络处理,并转发给 Google 的模型服务,这意味着相关处理(包括 Cloudflare 对 IP 地址的处理)可能发生在你所在国家之外。除此之外的所有数据都留在你的设备与你的 iCloud 中。
13. 政策变更
本政策如有更新,会修改本页顶部的「最后更新」日期;涉及数据处理方式的重大变更会在应用内提示。
14. 联系方式
FishCap · willisshan66@gmail.com