【发布时间】:2023-03-27 05:05:01
【问题描述】:
我正在尝试使用 ios7 的后台获取功能调用 performFecthWithCompletionHandler。
为此,我设置了 180 秒的时间间隔。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
NSLog(@"Did finish launching");
NSTimeInterval timeInterval = 180;
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:timeInterval];
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
return YES;
}
我已经经历了许多线程,它建议 Xcode -> Debug -> Simulate Background fetch。哪个工作正常。
但我希望应用程序在 timeInterval 完成后自动调用此方法。 我尝试在不连接到 Xcode 的情况下运行应用程序。 但它不会在 180 秒后调用。调用它需要更多时间。
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"########### Received Backgroudn Fetch ###########");
//Increase Badge Number
[UIApplication sharedApplication].applicationIconBadgeNumber++;
UINavigationController *navigationController = (UINavigationController*)self.window.rootViewController;
NSLog(@"fetch");
id topViewController = navigationController.topViewController;
if ([topViewController isKindOfClass:[ViewController class]]) {
[(ViewController*)topViewController insertNewObjectForFetchWithCompletionHandler:completionHandler];
} else {
NSLog(@"Not the right class %@.", [topViewController class]);
completionHandler(UIBackgroundFetchResultFailed);
}
}
我在这里缺少什么吗?或者是什么让它没有被调用
【问题讨论】:
标签: objective-c iphone ios7 background