我试图能够设置我的应用程序将在后台保留多长时间。我希望能够控制我的应用程序可以在后台保持活动多长时间,直到它关闭。有什么我可以添加到 Info.plist 中的东西,可以设置它,bool 是让它在后台运行的开关吗?
我已阅读并发现 Apple 不允许应用程序在后台停留超过 10 分钟,但我做了一些测试,发现其他与我类似的实时应用程序持续时间超过 10 分钟。我还发现通过在 10 分钟标记之前设置和重置计时器来绕过此问题的旧帖子,这仍然适用于 iOS7,Apple 是否仍然接受它?
我试图能够设置我的应用程序将在后台保留多长时间。我希望能够控制我的应用程序可以在后台保持活动多长时间,直到它关闭。有什么我可以添加到 Info.plist 中的东西,可以设置它,bool 是让它在后台运行的开关吗?
我已阅读并发现 Apple 不允许应用程序在后台停留超过 10 分钟,但我做了一些测试,发现其他与我类似的实时应用程序持续时间超过 10 分钟。我还发现通过在 10 分钟标记之前设置和重置计时器来绕过此问题的旧帖子,这仍然适用于 iOS7,Apple 是否仍然接受它?
编辑:误解了问题。这是一个可能的替代方案。
- (void)applicationDidEnterBackground:(UIApplication *)application{
UIApplication* app = [UIApplication sharedApplication];
任务 = [应用程序 beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:task];
任务 = UIBackgroundTaskInvalid;
}];
// 启动长时间运行的任务并立即返回。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 执行与任务相关的工作。
NSLog(@"启动后台任务剩余时间 = %f", [app backgroundTimeRemaining]);
// 将时间保存到 NSUserdefaults
[[NSUserdefaults standardUserDefaults] setObject:[NSDate date] objectForKey@"startDate"];
[app endBackgroundTask:task];
任务 = UIBackgroundTaskInvalid;
});
}
- (void)applicationWillTerminate:(UIApplication *)application{
[[NSUserdefaults standardUserDefaults] setObject:[NSDate date] objectForKey@"terminateDate"];
}
-(void)applicationDidFinishLaunching:(UIApplication)application{
//获取开始时间和终止时间然后取一个差异
NSDate*temporaryDate1 = (NSDate*)[userDefaults objectForKey:@"startDate"];
NSDate*temporaryDate2 = (NSDate*)[userDefaults objectForKey:@"terminateDate"];
比较[临时日期1,临时日期2];
}
这是检查如何比较 NSDate 实例的链接。