在ios中编写后台服务
Posted
技术标签:
【中文标题】在ios中编写后台服务【英文标题】:Writing background service in ios 【发布时间】:2016-02-09 06:47:26 【问题描述】:我们能否在 ios 中编写后台服务,该服务会在延迟(例如 1 分钟)后继续在后台运行。
我有一个应用程序,它在我想为其编写后台服务的每一分钟后获取数据。
与应用程序是否运行无关,虽然应用程序不在内存中,但服务应在 1 分钟后继续运行。
我在 android 应用程序中编写了相同的服务,但我不知道在 ios 中是否可行。
【问题讨论】:
【参考方案1】:不,您不能,iOS 决定您的应用何时可以获取。 检查"Background Fetch mode" in this article.
【讨论】:
【参考方案2】:好吧,实际上这取决于您要执行的任务。要点是您不能永久在后台执行任何任务。在您需要请求的时间间隔内。
您可以在后台执行一些任务,例如下载等。您需要使用dispatch_async
- (void)applicationDidEnterBackground:(UIApplication *)application
之类的东西
- (void)applicationDidEnterBackground:(UIApplication *)application
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^
// Clean up any unfinished task business by marking where you
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = 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, preferably in chunks.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
);
有关有限任务等更多细节,您可以在以下链接中的苹果文档中找到。
BackgroundExecution
您还可以通过以下链接获得更多关于后台服务的帮助。
running-background-services-in-ios
【讨论】:
以上是关于在ios中编写后台服务的主要内容,如果未能解决你的问题,请参考以下文章