Back to Blog
·1 min read

2.5.4 拒审:后台声明必须对得上可见功能

2.5.4 管的是后台服务:App 进了后台,只能做它声明过、而且用户能感知到的事,比如音频播放、定位、VoIP、任务收尾、本地通知。 这类问题很难自查,原因是它不产生任何本地信号

2.5.4 管的是后台服务:App 进了后台,只能做它声明过、而且用户能感知到的事,比如音频播放、定位、VoIP、任务收尾、本地通知。

这类问题很难自查,原因是它不产生任何本地信号。后台模式在 Info.plist 或 Capabilities 里勾上就生效,编译、运行、测试全绿。没有哪个工具会告诉你"这项声明没有被任何用户可见功能用到"。只有审核时,有人把声明和实际行为逐项对一遍。

最容易踩的是"为了让提醒在锁屏后还能响,顺手勾一个后台模式"。功能看起来能用,但选错了机制:你是想让进程一直活着,而真正需要的只是"未来某个时刻通知用户"。

修的顺序有讲究: 1. 先列清单:每一项后台声明对应哪个用户可见的功能。 2. 把"到点提醒"这类需求换成本地通知,在未来的触发时间预先安排好,不依赖进程存活。 3. 确认没有后台模式也能工作之后,再删掉声明。先删声明,功能会坏,人就会想把声明加回去。

一分钟自测:打开 UIBackgroundModes,逐项回答"用户在哪个界面、做了什么操作会触发它"。答不出来的就是风险项。再把 App 切到后台观察半分钟,看它是否真的在做那件事。

后台能力不是"以防万一"的保险,每一项声明都是一份要被核对的承诺。

#build-log

Written by

Peter Zhang

Building local-first Mac & iOS productivity apps at Obelisk Club.