gpt4 book ai didi

ios - ios 上的后台 http 请求为 "killed app"

转载 作者:可可西里 更新时间:2023-11-01 17:34:28 26 4
gpt4 key购买 nike

我阅读了很多有关 iOS 背景知识的文章,但对于一个特定案例,我仍然无法理解概念。

当我的应用程序被 taskmanager(或由于内存压力而被 iOS 终止)并且发生重要的位置变化或地理围栏时,我的整个应用程序将由 iOS 启动并调用我的回调方法。

这里的第一个问题是:我处于什么状态?即使 UI 已部分加载,所以我有点像前景,但由于显示屏上没有任何内容,我认为它是背景。

我的第二个也是主要问题是,如果当前互联网连接中断,我如何发送 http 请求并重新发送它们?

我尝试过使用 [NSThread sleepWithInterval]dispatchNSTimer。所有这些都有同样糟糕的结果:它在前台工作得很好,在正常背景(用户按下主页按钮)中也很好,但在上述状态下非常糟糕。如果它们运行得足够快,我可以发送多个 http 请求,但是当我需要几秒钟的 sleep 时,我会随机被杀死。当我使用延迟 2 秒的计时器时,我能够在应用程序的所有输出停止之前到达我的“重新发送 http 请求”方法 2-3 次。如果我使用我计划的 30 秒延迟,我什至一次都不会接到计时器调用。

最后一个问题是:我需要注册后台权限吗?我已经在用了

<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>

或者使用 NSOperationQueue 会有帮助吗?它是否具有我没有的特殊权限?

最佳答案

您可以通过调用来检查应用程序状态

[[UIApplication sharedApplication] applicationState]

在您的情况下,它应该是 UIApplicationStateBackground


如果您使用 NSURLSession 进行网络请求,您可以使用后台 session 配置来设置它。当您的应用程序处于后台时,这将允许系统处理网络请求,即使您的应用程序未运行也是如此。

关于ios - ios 上的后台 http 请求为 "killed app",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729950/

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