iphone - iOS 应用程序如何在后台无限期地保持 TCP 连接?

标签 iphone ios background

一个 iPhone 应用程序,通过 TCP 连接到远程服务器。使用场景是:

  1. 应用程序(用户)向服务器发送数据,服务器响应数据。
  2. 服务器可能会在不执行任何操作时向应用发送数据。

假设如果应用程序在 30 分钟内没有向服务器发送数据,服务器将关闭连接。即使用户什么都不做,我也想保持连接 120 分钟。

案例 1:如果应用程序在前台,我可以使用计时器向服务器发送一些无所事事的数据。没问题。

情况 2:如果用户按下 Home,应用程序进入后台,我该怎么办?我不想显示警报或打断用户(他不在或正在玩游戏)。我只想让连接保持更长的时间,当用户返回应用程序时,他发现连接仍然存在并对此感到满意。

我已阅读有关后台执行、多任务处理和 iphone API 本地通知的文档。 我不确定是否可以实现情况 2

只使用合法API,不越狱。

最佳答案

Tapbots 通过提示用户运行 silent background audio track 解决了 Pastebot 的这个问题。在任何时候。

请注意,Apple 不赞成使用诸如使用背景音频或 VOIP API 来保持非音频或 VOIP 应用程序运行的黑客行为(如上文所述的“解决方法”所证明),因此涉足这些技术可能会被拒绝提交。

不幸的是,没有合法的 API 可以在后台保持连接。也许他们会在未来的 iOS 更新中引入一个,但您可以考虑提交 feature request表达您对它的支持。

关于iphone - iOS 应用程序如何在后台无限期地保持 TCP 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5840365/

相关文章:

iphone - css 100% 宽度 iphone

iPhone模拟器只显示空白的灰色屏幕?

ios - 切换到横向时,Tableview 将约束更改为全屏

ios - Xcode 中的文件不工作(名称为红色)

html - 背景html

html - 以响应大小垂直扩展背景

iphone - 在 Objective-C 中获取下周六的日期?

ios - swift : Error: 'required' initializer 'init(coder:)' must be provided by subclass of 'UIView'

iphone - Dev、AdHoc 和 App Store 构建的不同设置