gpt4 book ai didi

ios - iOS 中长时间运行的后台任务

转载 作者:行者123 更新时间:2023-11-29 02:42:11 25 4
gpt4 key购买 nike

我知道这是一个很常见的问题。我已经阅读了很多答案,但没有找到适合我的答案。这就是为什么我发布这个问题并希望有人会告诉我如何修复我的代码。

  1. 我有函数 startUpdate 来使用 CLLocationManager 更新位置。在 applicationDidEnterBackground 方法中,我写了如下内容:

    [自启动更新];//位置 1NSLog(@"applicationDidEnterBackground");__block UIBackgroundTaskIdentifier bgTask;bgTask = [应用程序 beginBackgroundTaskWithExpirationHandler:^{ [应用程序结束背景任务:bgTask]; bgTask = UIBackgroundTaskInvalid;}];

    [自启动更新];//位置 2//启动长时间运行的任务并立即返回。

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [自启动更新];//位置 3 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://google.com "]];});

    • 我尝试将 [self startUpdate] 放在三个位置之一(位置 1、2、3)中,有时有效,有时无效,我不知道为什么。

    • 如果它有效,更新只需在 3 分钟内运行事件。如果我在应用程序处于前台时调用 startUpdate,然后将应用程序置于后台,更新将持续 15 分钟与真实设备和超过 1 小时与模拟器(我不知道确切,1 小时后,我认为它会永远持续那么我停止测试)。那么有什么区别:前台启动日期->转到后台与后台启动日期;模拟器 vs 真机?

    • 在位置 3 之后,我调用了以下行来打开 safari[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://google.com "]];但它不起作用。那么这里可以在后台执行什么类型的任务?

  2. 我需要让服务永远运行。一些搜索结果说这是不可能的。但是一些熟悉的应用程序做到了(Facebook,...保持服务以接收通知)。他们怎么能那样做?

非常感谢,

最佳答案

位置服务的确切行为已在核心位置文档的最新更新中阐明。现在它指出 -

  • The standard location service delivers events normally while an app is running in the foreground. When your app is in the background, this service delivers events only when the location-updates background mode is enabled for the app. This service does not relaunch iOS apps that have been terminated.

  • The significant location change service delivers events normally while an app is running in the foreground or background. For a terminated iOS app, this service relaunches the app to deliver events. Use of this service requires “Always” authorization from the user.

因此,为了获得在后台继续接收位置更新的最佳机会,您应该在进入后台状态后切换到重大位置变化监控,并在返回前台后恢复完整位置监控。

关于ios - iOS 中长时间运行的后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25624492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com