支持

Cairn(中文名「司候」)· iPhone / iPad / Mac / Apple Watch最后更新:2026 年 8 月 25 日

联系开发者

gwongsam@gmail.com

这是一款独立开发的应用,由一个人维护。我会尽量在 2 个工作日内回复,遇到需要复现的问题可能更久一些。中文或英文都可以。

报告问题时,请一并告诉我这几样,能省掉一轮来回:

  1. 应用版本与系统版本——版本号在设置 › 关于 › 版本
  2. 设备类型(iPhone / iPad / Mac / Apple Watch);
  3. 你做了什么、期望看到什么、实际看到什么;
  4. 如果和同步或存储有关,把设置 › 关于 › 存储那一行的文字一起发来(例如「iCloud 同步中」或「仅本机(App Group)」)。

1. 要花钱吗?

不要。Cairn 目前完全免费,没有订阅、没有内购、没有广告、没有事件数量上限,也没有任何功能被锁在付费墙后面。因此也就没有「恢复购买」「取消订阅」这类问题——如果你在某处看到有人向你收取 Cairn 的费用,那不是我。

2. 我的数据存在哪里?会不会丢?

事件存在你自己的设备上(放在一个与小组件共用的 App Group 容器里)。如果你的设备已登录 Apple 账户并且 iCloud 可用,同一份数据还会保存到你自己 Apple 账户的 iCloud 私有数据库,用于在你的设备之间同步。开发者没有服务器,也拿不到你的事件——详见隐私政策

当前状态可以在设置 › 关于 › 存储看到:

这也意味着:设备丢失、损坏或被重置,而你又没开 iCloud 同步时,我无法帮你找回数据。请养成定期导出备份的习惯(下一条)。

3. 怎么备份?

设置 › 数据 › 导出备份。会生成一个名为 Cairn-年-月-日.json 的文件,包含全部事件及其提醒设置(标题、图标、颜色、方向、日期与时刻、时区、重复规则、农历开关、分类、备注、置顶与归档状态、创建时间),然后通过系统分享面板存到你想放的地方(「文件」、iCloud Drive、网盘、发给自己等)。

这份文件是明文 JSON,没有加密——它可以直接用任何文本编辑器打开,这是有意的(你的数据应该在没有 Cairn 的情况下也读得懂)。但也因此,谁拿到这个文件就能读到里面的全部内容,请自行妥善保管,别随手丢在公开的网盘目录里。

4. 换新设备怎么把数据带过去?

两条路,任选其一:

导入是「追加」不是「替换」,而且不做去重。如果你在一台已经有数据的设备上导入自己的备份,同一件事会变成两条。想要干净的结果,请在空的(或已清空的)状态下导入。

5. iCloud 同步没反应

先看设置 › 关于 › 存储那一行:

  1. 系统设置里确认已登录 Apple 账户,并且 iCloud 处于可用状态;
  2. 确认系统设置里 iCloud 对 Cairn 是打开的;
  3. 确认 iCloud 存储空间没满——空间不足会让写入被拒绝;
  4. 确认网络可用,然后完全退出应用再打开(存储通道是在启动时选定的,不会中途切换);
  5. 两台设备要登录同一个 Apple 账户;换了账户的话,新账户里本来就不会有旧账户的数据。

还是不行的话,把两台设备上「存储」那一行的文字和应用版本发给我。

6. 通知不来,或者「已排程通知」是 0

先去设置 › 提醒看「通知权限」那一行:

另外要知道一个系统限制:iOS 的待触发通知上限是 64 条。Cairn 只能在这个额度内排程,因此排的是最近的一批,每次你回到应用时补排后面的。事件很多时,很远的那些要等临近了才会进入排程——这不是漏排。

7. 手表上看不到事件

手表上的数据是 iPhone 直接推过去的,不经过 iCloud。手表那份是只读镜像——在手表上看到的一切都来自最近一次推送。

  1. 在 iPhone 上打开设置 › Apple Watch,看「手表」那一行的状态:已连接 / 手表 App 未安装 / 未配对手表 / 不可用
  2. 如果是「手表 App 未安装」,先在 iPhone 的「Watch」应用里把 Cairn 装到手表上;
  3. 确认两台设备都开着、彼此在通信范围内(蓝牙或同一 Wi-Fi);
  4. 「同步到手表」手动推一次,然后看「上次推送」的时间有没有更新。

因为是单向推送,请在 iPhone 上编辑事件;手表端只负责显示。

8. 小组件不更新

小组件读的是与主应用共用的那份数据,改完事件通常几秒内就会刷新。如果没有:

  1. 打开一次主应用——这会主动触发一次小组件刷新;
  2. 小组件的刷新时机由系统调度,低电量模式下会明显变慢,这不受应用控制;
  3. 把小组件移除后重新添加一次;
  4. 如果设置 › 关于 › 存储显示的不是 App Group 或 iCloud(例如「未持久化」),小组件会读不到数据,请把这一行发给我。

9. 导入日历或生日没有内容

两种导入都需要系统权限,而且都只读

Cairn 不会新增、修改或删除你的任何日历事件与联系人,也不会把读到的内容传到任何地方。

10. 导入进来的事件没有提醒

这是设计如此。从日历或通讯录导入的事件一律不带提醒——一次导进来几十条生日,如果每条都自动排提醒,你的通知会被淹掉。需要提醒的,进事件编辑页单独加。

11. 倒数的进度条是不是画反了?

没有画反。Cairn 的倒数进度条读法和电量条一样:实心的部分是「还没花掉的时间」,从满走到空。越接近那一天,条子越短。

很多同类应用画的是「已经过去多少」,所以看起来是相反的方向。正数(纪念日)那边则相反——它本来就是往上累加的,条子随着走过的里程碑增长。

12. 出国之后,数字为什么没跟着变?

因为时区是锁在事件本身上的,不跟着设备走。你在事件编辑页里选的那个时区,决定了这件事「什么时候算到」。

这是有意的:家里的婚礼在北京时间那天开始,你飞到美国,它不该因为你换了地方就提前或推后。如果某件事确实应该跟着你走,把它的时区改成你当前所在的时区即可。

13. 农历事件是怎么算的?

事件编辑页里有「按农历重复」。打开之后,重复规则会按农历日期推算下一次,而不是公历——所以每年对应的公历日期会前后浮动,这是正确行为。

另外设置 › 显示 › 显示农历是个独立的开关,它只管界面上要不要额外显示一行农历日期,不影响任何计算。

14. 归档、删除,以及怎么彻底清空数据

归档是把已经过去、又不想删的事件收起来:在事件上选「归档」,之后在设置 › 归档区里还能找到它。归档不删除数据。

删除事件就是真的删除。如果开着 iCloud 同步,删除会同步到你其他设备上。

彻底清空:删除全部事件(含归档区),然后删除应用本身——本机数据随应用一起消失。iCloud 私有库里那份属于你的 Apple 账户,可以在系统设置 › 你的 Apple 账户 › iCloud 里管理 Cairn 的存储与数据。我这边没有任何副本可删,因为我从来没有过。


没找到你的问题?直接发邮件到 gwongsam@gmail.com。本页的英文版

Support

Cairn · iPhone / iPad / Mac / Apple WatchLast updated: 25 August 2026

Contact the developer

gwongsam@gmail.com

Cairn is an independent app maintained by one person. I aim to reply within 2 business days; issues that need reproducing may take longer. English or Chinese are both fine.

When reporting a problem, please include these — it saves a round trip:

  1. App version and OS version — the version is under Settings › About › Version;
  2. Which device (iPhone / iPad / Mac / Apple Watch);
  3. What you did, what you expected, and what actually happened;
  4. If it involves syncing or storage, include the text on the Settings › About › Storage row (for example "Syncing with iCloud" or "This device only (App Group)").

1. Does it cost anything?

No. Cairn is currently free: no subscription, no in-app purchases, no ads, no cap on how many events you can create, and no features behind a paywall. That also means there is nothing to "restore" or "cancel" — if anyone is charging you for Cairn, it isn't me.

2. Where is my data stored? Can I lose it?

Your events live on your own device, in an App Group container shared with the widgets. If your device is signed in to an Apple Account with iCloud available, the same data is also stored in the iCloud private database of your own Apple Account so it can sync between your devices. The developer runs no servers and cannot see your events — see the Privacy Policy.

You can check the current state under Settings › About › Storage:

It also means that if a device is lost, broken, or erased while iCloud sync is off, I cannot recover anything for you. Please export a backup from time to time (next question).

3. How do I back up?

Settings › Data › Export Backup. It produces a file named Cairn-YYYY-MM-DD.json containing all your events and their reminder settings (title, symbol, colour, direction, date and time, time zone, repeat rule, lunar flag, category, note, pinned and archived state, creation date), then hands it to the system share sheet so you can put it wherever you like — Files, iCloud Drive, another cloud service, or emailed to yourself.

The file is plain, unencrypted JSON. You can open it in any text editor, and that's deliberate — your data should stay readable even without Cairn. The flip side is that anyone who gets the file can read everything in it, so store it somewhere sensible rather than a shared folder.

4. How do I move my data to a new device?

Either way works:

Importing appends rather than replaces, and does not de-duplicate. If you import your own backup onto a device that already has the same events, you will end up with two of each. For a clean result, import into an empty state.

5. iCloud sync isn't doing anything

Start with the Settings › About › Storage row:

  1. Confirm the device is signed in to an Apple Account with iCloud available;
  2. Confirm iCloud is enabled for Cairn in System Settings;
  3. Confirm your iCloud storage isn't full — writes are rejected when it is;
  4. Confirm you have a network connection, then quit the app completely and reopen it (the storage channel is chosen at launch and doesn't switch mid-session);
  5. Both devices must be on the same Apple Account; a different account will not contain the other account's data.

If it still won't sync, send me the "Storage" text from both devices along with the app version.

6. Notifications don't arrive, or "Scheduled notifications" is 0

Check the "Notification permission" row under Settings › Reminders:

One system limit worth knowing: iOS caps pending notifications at 64. Cairn schedules within that budget, so it queues the nearest ones and tops the rest up each time you come back to the app. With many events, distant ones only enter the queue as they approach — they haven't been dropped.

7. My watch doesn't show my events

Watch data is pushed straight from your iPhone; iCloud is not involved. The copy on the watch is a read-only mirror of the last push.

  1. On the iPhone open Settings › Apple Watch and read the "Watch" row: Connected / Watch app not installed / No watch paired / Not available;
  2. If the watch app isn't installed, install Cairn on the watch from the iPhone's Watch app;
  3. Make sure both devices are awake and in range of each other (Bluetooth or the same Wi-Fi);
  4. Tap Sync to Watch to push manually, then check whether "Last pushed" updates.

Because the push is one-way, edit your events on the iPhone; the watch only displays them.

8. Widgets aren't updating

Widgets read the same data as the app and normally refresh within seconds of a change. If yours doesn't:

  1. Open the app once — that explicitly asks the system to refresh the widgets;
  2. Widget refreshes are scheduled by the system and slow down noticeably in Low Power Mode; that isn't under the app's control;
  3. Remove the widget and add it again;
  4. If Settings › About › Storage shows something other than App Group or iCloud (for example "Not persisted"), the widgets cannot read the data — please send me that row.

9. Importing from Calendar or Contacts finds nothing

Both importers need system permission, and both are read-only:

Cairn never creates, edits, or deletes a calendar event or a contact, and nothing it reads leaves your device.

10. Imported events have no reminders

That's deliberate. Events imported from Calendar or Contacts never carry reminders — importing several dozen birthdays at once would otherwise bury you in notifications. Add reminders yourself, in the editor, to the ones you actually want.

11. Is the countdown bar drawn backwards?

No. Cairn's countdown bar reads like a battery: the filled part is the time you haven't spent yet, running from full to empty. The closer the day gets, the shorter the bar.

Many similar apps draw "how much has elapsed" instead, which runs the other way. Count-ups behave the opposite way here too — they accumulate, growing as you pass each milestone.

12. I travelled abroad — why didn't the number change?

Because the time zone is pinned to the event, not to your device. Whatever you picked in the editor decides when that event lands.

This is on purpose: a wedding that starts on a particular day back home shouldn't shift because you flew somewhere else. If an event genuinely should follow you, change its time zone to the one you're in.

13. How do lunar events work?

The event editor has a Repeat by lunar date switch. With it on, the repeat rule advances by the lunar calendar rather than the Gregorian one — so the corresponding Gregorian date drifts from year to year, which is the correct behaviour.

Settings › Display › Show lunar date is a separate switch: it only controls whether an extra lunar date line appears in the interface, and affects no calculation.

14. Archiving, deleting, and wiping everything

Archiving puts an event that has passed out of the way without deleting it: choose Archive on the event, and you'll still find it under Settings › Archive.

Deleting an event really deletes it. With iCloud sync on, the deletion propagates to your other devices.

To wipe everything: delete all events (including the archive), then delete the app — local data goes with it. The copy in the iCloud private database belongs to your Apple Account, and you can manage Cairn's storage and data under System Settings › your Apple Account › iCloud. There is no copy on my side to delete, because there never was one.


Didn't find your answer? Just email gwongsam@gmail.com. The Chinese version of this page.