iOS 9 应用程序关闭时如何向服务器发出请求?

Posted

技术标签:

【中文标题】iOS 9 应用程序关闭时如何向服务器发出请求?【英文标题】:How to make a request to a server when the iOS 9 app is closed? 【发布时间】:2016-08-08 13:33:09 【问题描述】:

美好的一天。我已经阅读了很多关于这个问题的内容,并且对于以前版本的 ios 有很多 SO 问题。

我想知道,对于 iOS 9,如果应用程序没有打开(所以它没有启动或被强制退出),我能否以某种方式向服务器发送数据(一个包含大约 20-30kbs 有效负载数据的请求) )?

或者从 iOS 9.3 开始,这仍然是不行的?

我什至可以在没有收到服务器响应的情况下离开(我很绝望)

【问题讨论】:

这可能会有所帮助:blog.newrelic.com/2016/01/13/ios9-background-execution 谢谢你,但我希望在强制退出后发送请求。所以后台执行不适用于这个用例 【参考方案1】:

长期以来,我们一直在与类似的要求作斗争。但我们最终决定不这样做。

Apple 建议只对您的应用程序进行快速状态日志,以便您在再次打开应用程序时可以恢复相同的状态。当应用程序即将进入后台时,最好的做法是在磁盘上写入一些内容,这在应用程序再次加载时可能会有用。

我们尝试在每次用户将应用程序转到后台时连接到服务器,但在添加此代码后我们看到了很多应用程序崩溃问题。因为,如果需要时间转到后台,操作系统强制退出应用程序。

我们最终决定将任何信息存储在磁盘上,然后在下次打开应用程序时将其发送到服务器。

【讨论】:

谢谢!但我所需要的只是向服务器发送一个带有有效负载的请求。所以绝对没有办法正确地做到这一点? 当应用程序即将进入后台时连接到服务器是个坏主意。对于大多数使用 3G 的人来说,你肯定会导致应用程序崩溃。 在我们的例子中,我们只发送了几个字节的数据,20% 的用户面临崩溃。 您可以尝试将信息写入磁盘,然后尝试执行服务器调用,这将保存状态以便可以检索,但如果连接速度足够快,服务器调用可能会继续在应用程序被强制退出之前通过。 @codetiger 谢谢。这是我不想要的)

以上是关于iOS 9 应用程序关闭时如何向服务器发出请求?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 物理 iOS 设备无法向我的本地 asp.net 服务器发出 api 请求

如何向外部 Rest Api 发出 Http Post 请求? [关闭]

应用程序终止时 Swift 向服务器发送请求 [关闭]

如何获取IE发出的HTTP请求头

如何通过 iOS 设备(使用 Xcode)向 localhost 发出请求?

为啥我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil?