iOS应用程序在后台运行

时间:2013-10-08 17:16:26

标签: iphone ios ios7 background-process info.plist

我正在尝试设置我的应用在后台保留多长时间。我希望能够控制我的应用程序在后台保持活动状态的时间,直到它关闭为止。有没有我可以添加到Info.plist中的东西,可以设置它,使用bool来切换它是否在后台运行?

我已经阅读并发现Apple不会让应用程序在后台停留超过10分钟,但我已经做了一些测试,发现其他类似于我的应用程序,持续时间超过10分钟。我还发现旧的帖子通过在10分钟之前设置和重置定时器来绕过这个,这是否仍适用于iOS7并且Apple仍然接受它吗?

1 个答案:

答案 0 :(得分:3)

编辑:误解了这些问题。这是一个可能的替代方案。

- (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实例。