我正在尝试设置我的应用在后台保留的时间。我希望能够控制我的应用程序在关闭之前在后台保持事件状态的时间。有什么我可以添加到 Info.plist 的东西可以设置它,使用 bool 是让它在后台运行或不运行的开关吗?
我已经阅读并发现 Apple 不允许应用程序在后台停留超过 10 分钟,但我做了一些测试并发现其他与我类似的实时应用程序,持续时间超过 10 分钟。我还发现旧帖子通过在 10 分钟标记之前设置和重置计时器来绕过这个,这是否仍然适用于 iOS7,Apple 是否仍然接受它?
最佳答案
编辑:误解了问题。这是一个可能的替代方案。
- (void)applicationDidEnterBackground:(UIApplication *)application{ UIApplication* app = [UIApplication sharedApplication]; task = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:task]; task = UIBackgroundTaskInvalid; }]; // Start the long-running task and return immediately. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Do the work associated with the task. NSLog(@"Started background task timeremaining = %f", [app backgroundTimeRemaining]); // save time to NSUserdefaults [[NSUserdefaults standardUserDefaults] setObject:[NSDate date] objectForKey@"startDate"]; [app endBackgroundTask:task]; task = UIBackgroundTaskInvalid; }); } - (void)applicationWillTerminate:(UIApplication *)application{ [[NSUserdefaults standardUserDefaults] setObject:[NSDate date] objectForKey@"terminateDate"]; } -(void)applicationDidFinishLaunching:(UIApplication)application{ //get start time & terminate time & then take a diffrence NSDate* temporaryDate1 = (NSDate*)[userDefaults objectForKey:@"startDate"]; NSDate* temporaryDate2 = (NSDate*)[userDefaults objectForKey:@"terminateDate"]; compare[temporaryDate1,temporaryDate2]; }
这是一个link检查如何比较 NSDate 实例。
关于iphone - 后台运行的 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254156/