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

Flutter iOS静默推送警告:未调用fetchCompletionHandler回调求助

iOS静默推送回调未触发及Completion Handler警告解决方案
  • 检查推送Payload格式
    静默推送必须包含content-available: 1,且不能包含alert、sound等会触发UI提示的字段,正确示例如下:

    {
      "aps": {
        "content-available": 1
      },
      "custom_data": "your_business_data"
    }
    

    注意:content-available的值必须是数字1,不能是字符串。

  • 确认后台权限配置

    1. 在Xcode项目的Signing & Capabilities中添加Background Modes能力,勾选Remote notifications选项;
    2. 在设备的「设置-对应App-后台App刷新」中,确保该权限已开启。
  • 必须调用Completion Handler
    无论是否需要处理业务逻辑,都要在application:didReceiveRemoteNotification:fetchCompletionHandler:方法末尾调用回调函数,否则会触发警告。示例代码:
    Objective-C版本:

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
        // 此处添加你的业务处理逻辑
        completionHandler(UIBackgroundFetchResultNewData);
    }
    

    Swift版本:

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // 此处添加你的业务处理逻辑
        completionHandler(.newData)
    }
    

    可根据实际情况选择UIBackgroundFetchResultNewData/UIBackgroundFetchResultNoData/UIBackgroundFetchResultFailed作为参数。

  • 验证推送环境与证书
    确保推送使用的证书与当前App运行环境匹配:开发环境用Sandbox证书,生产环境用Production证书,证书不匹配会导致回调异常。

  • 注意App运行状态限制
    当App被用户手动划掉杀死后,iOS系统不会触发静默推送回调,这是系统默认限制,无法绕过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:27:05