后台刷新完成前显示的推送通知(使用后台刷新推送)

Push notification showing before background refresh finished (using Push with background refresh)

我正在尝试设置我的应用程序,以便在收到推送时首先获取新消息,然后再显示推送通知。在我的推送通知中,我设置了 content-available = 1 以及在 Plist 中启用的开关。我已经实施:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{

    if([[userInfo objectForKey:@"aps"] objectForKey:@"content-available"]){

        NSLog(@"Doing the background refresh");
        UINavigationController *navigationController=(UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController];

        MYViewController *MYViewController = (MYViewController *)[[navigationController viewControllers] objectAtIndex:1];

        [myViewController.currentUser refreshMessagesArrayWithCompletionHandler:^(BOOL successful, BOOL newMiaos) {

            NSLog(@"messages refreshed the array now has %lu messages",(unsigned long)[myViewController.currentUser.messages count]);
            handler(UIBackgroundFetchResultNewData);

        }];




    }
}

应用推送将在后台完成之前或刷新期间进来。当然它应该在后面。我处理这个错误吗?我是否需要发送静默推送通知并在完成块后显示 local 通知?

我遇到了和你类似的问题,
我通过发送这样的推送通知解决了这个问题

{
        "alert": null,
        "content-available": 1,
        "data-id" : "some_data_id"
}

在这种情况下不会显示推送通知, 所以在后台获取你可以执行获取并触发本地通知。