背景抓取难题

时间:2017-06-28 19:11:18

标签: ios objective-c fetch

我的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的登录方法,并且成功
  2. 告诉Fetch机制一切正常
  3. 使用1000
  4. 提高申请编号

    现在,出于某种原因,未提高徽章数量,并且登录方法成功完成,并且

    处的断点
    [UIApplication sharedApplication].applicationIconBadgeNumber += 1000;
    

    实际上打破了执行,我担心Fetch的成功完成。因为,如果它被认为不成功,应用程序将最终停止尝试获取,据我所知。

    你们有没有人能指出我在这里做错了什么? 提前致谢

    你真的

1 个答案:

答案 0 :(得分:0)

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

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

[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];

[UIApplication sharedApplication].applicationIconBadgeNumber += 1000;

注意:

  

您可以completionHandler(UIBackgroundFetchResultNewData);放置任何内容   哪里。没关系。