You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS富通知didReceiveNotificationRequest未触发问题求助

排查NotificationService didReceiveNotificationRequest不触发的问题

看起来你已经搞定了基础推送功能,但富通知的Service Extension死活没触发,确实挺闹心的。我帮你梳理几个高频踩坑点,你逐一排查下:

1. 先确认测试场景是否正确

Notification Service Extension只有在通知需要展示给用户时才会触发:

  • 你的App处于后台、锁屏状态;
  • 或者App在前台,但你已经在userNotificationCenter:willPresentNotification:方法中返回了UNNotificationPresentationOptionAlert(允许前台显示通知弹窗)。

如果App在前台但没让通知显示出来,系统是不会调用Extension的,这是很多人一开始忽略的点!

2. 检查Notification Service Extension的配置细节

  • Bundle ID规则:Extension的Bundle ID必须是主App Bundle ID的后缀形式(比如主App是com.yourcompany.yourapp,Extension就得是com.yourcompany.yourapp.NotificationService),系统靠这个关联主App和Extension;
  • Deployment Target:Extension的部署目标要和主App一致,且不能低于iOS 10(富通知是iOS 10才引入的特性);
  • 签名配置:在Xcode的Signing & Capabilities里,确保Extension的Provisioning Profile有效。注意:Extension不需要开启Push Notifications权限,但签名必须和主App匹配。

3. 核对推送Payload的格式

你截图里看到mutable-content设为1了,但一定要确认这个值是整数类型,而不是字符串"1"!APNs对这个字段的类型要求非常严格,如果后端传的是带引号的字符串,系统会直接忽略,不会触发Extension。

你可以用APNs测试工具直接发送测试Payload,确保格式类似:

{
  "aps": {
    "alert": "测试富通知",
    "mutable-content": 1
  },
  "thumbnail_image": "https://example.com/test.png"
}

4. 确认主App的推送配置

主App的Capabilities里必须开启Push Notifications,且APNs证书配置正确。虽然基础推送能工作,但偶尔主App的推送权限配置有细微问题,也会影响Extension的触发。


额外提醒:解决触发后的代码小坑

等你搞定Extension触发问题后,你的loadAttachmentForUrlString方法里还有个容易出错的地方:
你用stringByAppendingString:拼接文件扩展名,会生成错误的路径(比如/tmp/xxx.tmppng),正确的做法应该用stringByAppendingPathExtension:,代码修改如下:

NSURL *localURL = [NSURL fileURLWithPath:[temporaryFileLocation.path stringByAppendingPathExtension:extension]];

这样才能生成合法的文件路径,确保UNNotificationAttachment能创建成功。

内容的提问来源于stack exchange,提问作者Semih Akbas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:18:03