目标很简单:手机、电脑、服务器上的日程保持一致。实际做下来,关键在协议兼容性。
选协议
日历同步优先用 CalDAV——它是开放标准,主流手机系统和第三方客户端都支持。相比各家的私有同步,换设备时迁移成本最低。
服务端
轻量方案可以用 Radicale:单进程、文件存储、支持多用户和多个日历本。基础配置包括监听地址、认证方式(htpasswd)和存储目录。
客户端
手机添加账户时,填服务器地址、用户名和密码(或授权码)。有的客户端会先做账户发现,读取 current-user-principal;如果服务端没返回这个字段,就会报“无法连接服务器”。
踩过的坑
- 服务端不返回
current-user-principal时,部分客户端直接判定失败 - 事件时间用浮动时间还是带时区,会影响跨时区显示
- 反向代理加了路径前缀后,服务端要能正确生成带前缀的地址
- 用任务型日历本存事件,有的客户端会把它当待办列表,不显示事件
结论:服务端选标准实现、客户端填完整地址,通常最省事。遇到兼容性问题,先看服务端返回的 DAV 属性是否齐全。