• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 应用关闭时发送 HTTP 请求

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:52:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

所以我尝试在我的应用关闭时发出一个简单的 POST 请求。

我试过 [NSURLConnection sendAsynchronousRequest]
并使用 dispatch_async 执行 [NSURLConnection sendSynchronousRequest]。唯一真正按我的意愿工作的是在主线程上执行同步请求,但它会滞后,尤其是在服务器响应缓慢的情况下。

这两种工作都有效,只是它们会在应用再次打开时发送实际请求,而不是在应用关闭时发送。我目前正在 applicationDidEnterBackground 中执行此操作,但我也尝试过 applicationWillResignActive

我还在应用程序 info.plist 中设置了 Application does not run in background。没有变化。

当应用打开时,我可以做所有事情。但是如果我能在关闭应用程序的时候实现,代码会更好。

有可能吗?



Best Answer-推荐答案


来自 applicationDidEnterBackground 的文档 -

it's likely any background tasks you start in applicationDidEnterBackground: will not run until after that method exits, you should request additional background execution time before starting those tasks. In other words, first call beginBackgroundTaskWithExpirationHandler: and then run the task on a dispatch queue or secondary thread.

因此,您正在请求一个异步操作,但在 applicationDidEnterBackground 返回之前不会执行此任务,并且一旦此方法返回,您的应用程序将不再处于事件状态。一旦您的应用返回前台,这些任务就会坐在那里并运行。

iOS 编程指南提供有关 executing a task when your app moves to the background 的建议

你需要类似的东西 -

- (void)applicationDidEnterBackgroundUIApplication *)application
{
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
        // 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

        [NSURLConnection sendSynchronousEvent....];
        // TODO process results..

        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

关于ios - 应用关闭时发送 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23376779/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap