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,不能是字符串。确认后台权限配置
- 在Xcode项目的
Signing & Capabilities中添加Background Modes能力,勾选Remote notifications选项; - 在设备的「设置-对应App-后台App刷新」中,确保该权限已开启。
- 在Xcode项目的
必须调用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
相关产品推荐
相关产品推荐

