didReceiveRemoteNotification fetchCompletionHandler 未在后台调用静默推送

didReceiveRemoteNotification fetchCompletionHandler is not getting called in background for silent push

所以我添加了 didReceiveRemoteNotification 委托来处理静默推送通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

该方法应在后台调用以在通知用户之前更新内容,以便用户可以打开应用程序并立即呈现新内容。

但是这个方法永远不会在后台调用。我试图调试问题但没有成功。令人惊讶的是,如果我的应用程序在前台,这个方法会被正确调用,我可以很容易地检查 content-available 来更新 UI.

谁能帮我解决这个问题,为什么 didReceiveRemoteNotification:fetchCompletionHandler 没有在后台调用?

在 xcode 的 'Capabilities' 选项卡的 'Background Modes' 中启用 'Remote Notifications'。

有关详细信息,请参阅此 link

希望对您有所帮助。

问题与不正确的负载有关。

我得到的是 content-available 外部 aps 而不是它应该是 aps 的一部分。

不正确的负载:

{
   "_" = "asd-dfsd-werdsf";
   aps =     {
   };
   "content-available" = 1;
}

正确的负载:

    {
       "_" = "asd-dfsd-werdsf";
       aps =     {
       "content-available" = 1;
       };
    }