眺一下 隐私政策

Yonder — Privacy Policy

本页与 支持页面 内容一致地对照产品当前代码逐句核实(2026-09-05)。「定稿」不代表「不会再改」——本文只保证在核实那一刻与当时代码一致,代码或 Apple 隐私问卷要求变化时会跟着更新。

生效日期:2026-09-05

最后更新:2026-09-05

一、这份政策适用于谁

本政策适用于「眺一下」iPhone App 及其配套的 Apple Watch App(以下统称「本 App」)。本 App 是一款帮助你执行 20-20-20 用眼休息习惯的工具,不提供医疗诊断功能,也不应被当作医疗建议。

二、一句话结论

本 App 不收集你的任何数据,也没有我们自己的服务器。 它没有账号系统,没有第三方分析 / 广告 / 崩溃上报 SDK。你在 App 里产生的周期状态、个性化设置、今日次数,全都留在你自己的设备上。

但「没有我们的服务器」不等于「这个 App 从不联网」,这两件事必须分开说清楚。 准确的说法是:

系统框架用来做什么会不会离开你的设备
StoreKit查询 Pro 商品信息、发起购买、恢复购买、核对当前权益会。这一条确实会与 Apple 的 App Store 服务器通信,「恢复购买」还可能要求你重新登录 Apple 账户。经手的是 Apple,不是我们——我们既拿不到也不存储你的支付信息
WatchConnectivityiPhone ↔ Apple Watch 同步周期状态与控制指令不会。走苹果系统层的设备间本地配对通道
UserNotifications / AlarmKit排程与呈现提醒、持续警报不会。本机系统服务
WidgetKit刷新「今日进度」小组件(主屏 / StandBy 小组件位;不支持锁屏小组件位)不会。本机系统服务
ActivityKit呈现锁屏上那张会走倒计时的实时活动卡片与灵动岛不会。本机系统服务,状态由系统在本机保管

Apple 如何处理经过 StoreKit 的信息,适用 Apple 官方隐私政策。

随 App 一起提交给 Apple 的隐私清单 PrivacyInfo.xcprivacy 声明 NSPrivacyTracking = false、采集数据类型为空数组——这说的是「我们不采集、不追踪」,不是「不产生任何网络流量」。

三、我们不收集哪些信息

本 App 不需要注册账号,因此不会、也没有渠道收集:

我们没有自建服务器,产品功能不依赖任何我们自己的后端,因此:

唯一的例外是内购:Pro 的商品查询、购买与恢复购买要经过 Apple 的 App Store 服务器(见第二节的表和第四节)。那条通道由 Apple 提供、由 Apple 经手,我们既看不到也存不下你的支付信息。

四、Pro 购买与支付信息

本 App 提供一项「Pro 一次性购买」内购项目(非消耗型,不是订阅,不会自动续费),用于解锁个性化的工作时长、远眺时长、提醒铃声、延后时长四项设置。

基础提醒能力在免费版中完整提供,不是付费功能——标准 20 分钟工作 / 20 秒远眺周期与默认到时提醒不收费;AlarmKit 持续警报同样不收费,但它需要 iOS 26.0 及以上并授予「闹钟」权限,条件不满足时自动改走普通系统通知(见上一节)。Pro 只解锁上面那四项个性化设置。提醒能不能按时响,还取决于系统版本、权限、设备状态以及静音、专注等系统设置,本 App 不承诺必响,也不会无条件穿透静音或专注模式。

五、系统权限说明

本 App 只在需要时申请以下系统权限,全部只用于完成提醒功能,不用于收集任何个人信息。

权限请求的时机:本 App 不会在你第一次打开它时就连环弹出授权框。首次引导看完之后,直到你第一次真正点下「开始」,才会请求提醒相关的权限;无论你允许还是拒绝,这一次「开始」都会照常执行,不会因为拒绝授权就吞掉你的操作,也不会反复追问第二次。

下面两项是相互独立的两次系统授权,不是一个开关:通知权限归 iOS 的「通知」设置管,AlarmKit 权限是 iOS 26 起新增的另一项授权。允许其中一个、拒绝另一个都是可能的,App 会按实际拿到的权限选择用哪条通路提醒你。

1. 通知权限(UNUserNotificationCenter)

用于在工作到时、远眺结束时提醒你,也作为下方 AlarmKit 不可用时的兜底提醒方式。通知内容只有「该休息了」这一类提示文案与操作按钮,不包含任何个人信息,也不上传到任何地方。

2. AlarmKit 权限(NSAlarmKitUsageDescription)

用于提供一条比普通通知更明确、持续性更强的系统级警报(体验更接近「闹钟」)。App 内向你展示的权限说明原文为:

「用于在你设定的时间发出持续提醒,提醒你抬头看远处。」

AlarmKit 依赖 iOS 26.0 及以上系统版本。系统版本低于 iOS 26、或你拒绝了 AlarmKit 授权时,App 会自动回退为普通系统通知,不会因为拿不到 AlarmKit 权限就完全失去提醒能力。

本 App 不申请定位、通讯录、相册、麦克风、相机、健康数据或任何形式的追踪权限。

六、Apple Watch 与 iPhone 之间的数据同步

如果你安装并配对了 Apple Watch 版「眺一下」,两台设备之间会通过苹果官方的 WatchConnectivity 框架同步:

关于这条通道:

七、本 App 在你设备上存储了哪些数据

以下清单于 2026-09-05 逐项对照代码的实际读写点核实(不是只搜键名)。全部保存在设备本地的 UserDefaults(iOS/watchOS 提供的应用本地设置存储区),开发者不接收这些数据,本 App 也不主动上传到任何服务器、不主动同步到 iCloud 或任何云端账户。

关于系统备份:上面这些持久化设置可能会按你自己的系统设置、随 Apple 的设备备份 / iCloud 备份机制进入系统备份。那是 iOS / watchOS 平台层面的行为,由你在系统「设置」里自己开关,本 App 既不控制它、也读不到那份备份,更不会因此收到任何数据。这一条和第二章那张表不冲突:本 App 自己主动发起的网络通信仍然只有 StoreKit 那一项会与 Apple 的 App Store 服务器通信——「App 自己主动上传数据」(没有这回事)和「系统按你的设置替整台设备做备份」是完全不同的两件事。

「存在哪台设备上」是一个会被误读的地方,所以单列一栏:iPhone 上的数据和 Apple Watch 上的数据是两份,各自存在各自那台设备里,不存在一个跨设备的共享池。

存储内容用途存在哪台设备具体位置
当前工作/远眺周期状态(周期阶段、绝对结束时间、周期标识与版本号等)App 重启、锁屏、后台切换后恢复正确的周期状态,避免重复提醒或错误倒计时iPhone主 App 自己的 UserDefaults
Pro 个性化设置(自定义工作时长、远眺时长、铃声、延后时长)记住你购买 Pro 后设置的参数iPhone主 App 自己的 UserDefaults
铃声选择(提醒音效类型标识),以及一次性的铃声设置迁移完成标记记住你选择的提醒音效;标记确保旧版本升级时只迁移一次iPhone主 App 自己的 UserDefaults
已排程警报的标识台账记录当前排了哪些 AlarmKit 警报,取消或重排时按标识精确清扫,避免漏掉或重复iPhone主 App 自己的 UserDefaults
首次体验的两个标记(引导是否看过、权限是否已经请求过一次)引导只在第一次显示;权限只问一次,不反复打扰iPhone主 App 自己的 UserDefaults
今日完成次数(权威副本)主 App 显示「今天眺了几次」iPhone主 App 自己的 UserDefaults,不在共享容器里
给「今日进度」小组件看的那份投影(当前阶段、本轮结束时间、今日完成次数的一份拷贝)今日进度小组件读它来显示(可以放在主屏或 StandBy 的小组件位;不支持锁屏小组件位)。锁屏上那张会走倒计时的实时活动卡片和灵动岛不读它,见下iPhoneApp Group 共享容器 group.com.adrain.tiaoyixia(见下)
Watch 指令去重表(近期从 Apple Watch 收到的指令标识的短字符串记录)避免同一条来自手表的操作被重复执行iPhone主 App 自己的 UserDefaults
Watch 启动记录(启动时刻、累计启动次数、手表端版本号/构建号)判断手表上这个 App 是否真的启动过Apple Watch(不是 iPhone)手表端 App 自己的 UserDefaults。它会随每条发往 iPhone 的消息捎过去,但 iPhone 只把它放在内存里显示在诊断页上,不落盘
最近一份周期状态投影的缓存手表离线或 iPhone 暂不可达时仍能显示上次已知状态Apple Watch手表端 App 自己的 UserDefaults

关于「权威副本」和「投影」的区别(上表里今日完成次数占了两行,不是写重了):真正被当作事实的那一份「今天眺了几次」存在主 App 自己的 UserDefaults 里;共享容器里那一份是派生出来的只读投影,专门写给小组件读。分开的原因很实际——App Group 在某些签名配置下可能拿不到,那时不该连你自己 App 里的次数也一起丢掉,丢掉的只应该是「小组件上还能不能看到它」这一件事。

关于 App Group 共享容器:主 App 与「今日进度」小组件同属本 App 的同一个 App Group(group.com.adrain.tiaoyixia),主 App 把上面那份投影写进去,小组件读它。这个容器只在你这台 iPhone 上、只在本 App 自己的这几个部件之间共享,其他 App 读不到,也不会写给任何组外的东西看。Apple Watch 不参与这个共享容器——手表在另一台设备上,两端之间靠 WatchConnectivity 传消息,不是共享同一块存储。这一条已在提交给 Apple 的隐私清单里按 Apple 要求声明为 UserDefaults 的两条使用理由(CA92.1 与 1C8F.1)。

锁屏实时活动与灵动岛走的是另一条路,不经过这个共享容器(这两条别混成一件事):

你在屏幕上看到的东西数据从哪来
今日进度小组件(主屏 / StandBy 小组件位上那个不走秒的小方块;不支持锁屏小组件位)读上面那份 App Group 共享投影
锁屏上那张会走倒计时的卡片、以及灵动岛(StandBy 全屏显示的也是它)读的是系统 ActivityKit 自己保管的那份实时活动状态——主 App 通过系统接口把「当前阶段 + 本轮的绝对结束时间」推给系统,之后由系统负责在锁屏与灵动岛上呈现。它不读、也不写 App Group 那个共享容器,因此也不在上面那张存储表的任何一行里

两条路都只发生在你这台设备上,都不涉及任何服务器;分开写只是为了让上面那张表的「读的是谁」准确,不是说存在第二处数据留存。

关于开发调试功能:开发者选项、模拟购买面板、短周期测试模式等仅供内部开发使用的功能,不参与正式版本的编译,不会出现在你从 App Store 安装的 App 里。这一点已用签名后的正式构建产物逐项核验过(二进制符号与四种语言的文案资源中相关条目计数均为 0),不是「运行时隐藏」。

八、没有账号,如何清除本地数据

因为本 App 不要求注册账号,所以不存在「申请删除账号」这类流程。

本 App 目前没有提供 App 内的「清除本地数据」按钮;清除的办法是卸载。因为 iPhone 与 Apple Watch 上的数据是两份(见上表),这里分三件事说清楚:

  1. 卸载 iPhone 上的「眺一下」 —— iOS 会清除该 App 在这台 iPhone 上的本地存储,包括上表中标着「iPhone」的全部内容,以及那个 App Group 共享容器。
  2. Apple Watch 上那份要跟着手表端的 App 走 —— 上表中标着「Apple Watch」的两项(启动记录、周期状态投影缓存)存在手表本机。它们随手表端 App 一起被移除;iPhone 端卸载时,系统通常会一并移除配对手表上的伴侣 App,但如果你此前在 Watch App 里单独保留了它,就需要在手表上再删一次。请以你设备上的实际情况为准,不要假设删一端就一定删干净了两端。
  3. 已购买的 Pro 不受影响,也删不掉 —— 购买记录由 Apple 管理、存在你的 Apple 账户下,不在我们能触及的范围内。重新安装后在购买页点「恢复购买」即可重新获得权益;反过来说,卸载 App 也不会撤销或退掉这笔购买。

另外:因为我们从未收集过你的任何数据、也没有自建服务器,所以不存在需要我们代为删除的远端副本。(Apple 侧与你购买记录相关的数据由 Apple 按其隐私政策处理,不由我们经手。)

九、儿童隐私

本 App 不收集任何用户的个人信息,无论年龄。它没有账号、没有社交功能、没有用户生成内容、没有广告,也不进行任何形式的追踪,因此不存在针对儿童的数据采集行为。

十、政策的变更

本政策如有更新,我们会在本页更新「最后更新」日期,并在 App 版本更新说明中提示。因为本 App 没有账号体系,无法逐一通知用户,请以本页当前内容为准。

十一、联系方式

如你对本政策有任何问题,可通过以下方式联系我们:

电子邮件:safferuk@gmail.com

十二、与 App Store 隐私标签(Privacy Nutrition Label)的对应关系

App Store Connect 在提交审核前要求填写「App 隐私」问卷。基于上文已核实的事实,本 App 对应的正确填法是:

这份问卷需要项目负责人在 App Store Connect 上实际操作填写,本页不代替那一步;提交前应按 Apple 当时的问卷选项,对最终提交的那一份构建再核实一次。参考:Apple App Store Connect:管理 App 隐私