iOS NotificationContentExtension(NCE)富通知长按后无内容显示求助
核对Extension与推送的Category匹配
检查Extension的Info.plist中NSExtensionAttributes下的UNNotificationExtensionCategory值,必须和推送Payload里aps字典中的category字段完全一致(大小写、拼写都不能错)。这是Extension被唤起的核心条件,不匹配的话直接不会加载自定义UI。确认Extension是否被正常唤起
在NotificationViewController的didReceive(_ notification: UNNotification)方法中添加日志打印(比如print("Extension did receive notification")),或者打个断点。如果运行时没触发这个方法,说明推送没有触发Extension,优先检查category和mutable-content配置。排查UI布局问题
给自定义UI的根视图设置一个显眼的背景色(比如红色),运行后看长按通知时是否能显示这个颜色。如果能显示,说明是子控件的约束没设置好导致看不见;如果还是空白,可能是根视图本身的约束缺失,或者Extension的视图尺寸配置有问题。验证推送Payload的关键字段
推送的APNs Payload必须包含aps.mutable-content: 1,示例格式如下:{ "aps": { "alert": { "title": "测试通知", "body": "这是一条富通知" }, "category": "你的自定义Category", "mutable-content": 1 } }本地通知则需要在创建
UNMutableNotificationContent时设置content.mutableContent = true。检查资源与签名配置
- 自定义UI用到的图片、XIB等资源,必须勾选Extension的Target Membership(右键资源文件→查看Target Membership),确保Extension能访问到这些资源。
- 确认Extension的签名证书与主App一致,且主App和Extension都开启了Push Notifications权限(在Capabilities中检查)。
清理缓存与重新部署
除了你已经尝试的操作,还可以删除App的容器文件(在Xcode的Window→Devices and Simulators中选中设备里的App,点击齿轮→Show Container),彻底清理后重新打包部署。
内容的提问来源于stack exchange,提问作者Morgan Yu

