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

iOS后台状态下无需点击通知解析推送Payload及获取通知到达回调

后台接收推送Payload并触发回调的实现方案

当然可以做到!当你的App处于后台(甚至挂起状态)时,只要配置到位,推送通知到达后不用用户点击,你就能直接解析它的Payload并处理逻辑。下面分步骤给你讲清楚怎么实现:

一、先开启必要的后台权限

首先得在Xcode里给项目配置后台能力:

  • 打开项目的Signing & Capabilities标签,点击+ Capability,添加Background Modes
  • 在Background Modes里勾选Remote notifications选项
  • 同时,推送的Payload必须包含content-available: 1这个字段(注意是数字类型的1,不是字符串),这是告诉iOS系统“这条推送需要唤醒后台的App来处理”

二、实现对应的回调方法

根据iOS版本的不同,你需要在对应的代理类里实现处理方法:

iOS 10+ 推荐用UNUserNotificationCenterDelegate

在你的AppDelegate或者SceneDelegate(iOS 13及以上)里,遵守UNUserNotificationCenterDelegate协议,然后实现这个方法:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    // 从这里拿到推送的Payload
    let payload = response.notification.request.content.userInfo
    // 在这里处理你的解析逻辑
    print("后台收到推送Payload: \(payload)")
    
    // 一定要调用completionHandler,告诉系统处理完成
    completionHandler()
}

只要推送带了content-available:1,即使App在后台,这个方法也会被触发,不用用户点击通知。

兼容旧版本的后台回调方法

如果你需要兼容iOS 10以下,或者想专门处理后台唤醒的场景,可以用这些方法:

  • AppDelegate里的:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    // 解析Payload
    print("后台收到推送Payload: \(userInfo)")
    // 处理完后调用completionHandler,返回对应的结果
    completionHandler(.newData)
}
  • iOS 13+的SceneDelegate里的:
func scene(_ scene: UIScene, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let payload = userInfo
    // 处理逻辑
    completionHandler(.newData)
}

三、一些关键注意事项

  • 静默推送(不带alert、sound等显示字段的推送)只要包含content-available:1,也会触发后台回调,适合不需要通知用户但需要后台处理的场景
  • 系统对后台唤醒的频率有节流机制,如果短时间内频繁发送这类推送,系统可能会拒绝唤醒App,所以不要滥用这个功能
  • 测试的时候,确保App是真正处于后台状态(不是调试时手动挂起),可以用Xcode的Debug > Simulate Background Fetch来模拟,或者用APNs测试工具发送带content-available:1的推送

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:39:03