Apple推送控制台发送的Live Activity「Start」通知已送达但未启动
Live Activity「Start」推送解析失败排查方案
检查推送Payload顶层结构合规性
必须严格遵循APNS对Live Activity Start推送的格式要求:- 顶层必须包含
aps字段,aps下需同时存在event(值固定为start)和content-state字段 content-state的结构要和你定义的ContentState完全匹配,包括字段名大小写、数据类型(比如数字不能用字符串格式,布尔值不能写"true"/"false"字符串)- 示例合规Payload:
{ "aps": { "event": "start", "content-state": { "orderId": 12345, "status": "preparing" }, "alert": { "title": "订单开始处理" } } } - 注意:
content-state内不能使用APNS保留字段名(比如aps相关字段)
- 顶层必须包含
确认推送Token类型正确性
Start推送必须使用Live Activity专用Token,而非App普通推送Token。这个专用Token需要通过ActivityKit的requestToken(for:)方法获取,不能用UIApplication.shared.registerForRemoteNotifications拿到的通用Token。若混用Token,APNS会显示投递成功,但liveactivitiesd无法解析消息。核对推送环境一致性
客户端Debug包(开发证书签名)必须对应APNS开发环境推送控制台;Release包(生产证书签名)必须对应生产环境控制台。环境不匹配会导致推送无法被正确处理。验证ContentState编解码逻辑
确保你的ContentState完全遵循Codable协议,无自定义编解码逻辑导致的格式差异。可以在客户端本地构造与推送Payload一致的ContentState实例,编码为JSON后和推送Payload对比,排查字段遗漏或格式不匹配问题。检查App权限配置
Info.plist中必须添加NSLiveActivityUsageDescription字段,说明Live Activity的使用用途- 确认App已申请推送权限,且用户已允许推送(包含Live Activity相关权限)
查看详细日志定位问题
在Console.app中搜索liveactivitiesd,将日志级别切换为Debug后重新发送推送,查看更具体的解析错误提示(比如哪个字段不符合要求)。
内容的提问来源于stack exchange,提问作者papers1010
相关产品推荐
相关产品推荐

