背景获取拼图

Background Fetch puzzle

我的 AppDelegate 中有这段代码:

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

    ApiHandler *ah = [[ApiHandler alloc]init];
    [ah login:^(BOOL succes) {
        completionHandler(UIBackgroundFetchResultNewData);
        [UIApplication sharedApplication].applicationIconBadgeNumber += 1000;
    }];

}

当 iOS 认为适合进行后台获取时,我希望此代码执行的操作是:

  1. 执行我的 ApiHandler 的 login 方法,并在成功后
  2. 告诉 Fetch 机制一切正常
  3. 申请徽章数量加1000

现在,由于某种原因,徽章计数没有增加,而 login 方法已成功完成,并且在

处设置了一个断点
[UIApplication sharedApplication].applicationIconBadgeNumber += 1000;

居然打断了执行,担心Fetch能否顺利完成。因为,据我所知,如果它不被认为是成功的,应用程序最终将停止尝试获取。

你们中的任何人都可以指出我在这里做错了什么吗? 提前致谢

真心的

在设置徽章编号之前,您应该注册通知

UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];

[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];

[UIApplication sharedApplication].applicationIconBadgeNumber += 1000;

注:

You can place completionHandler(UIBackgroundFetchResultNewData); any where. It doesn't matter.