一个 iPhone 应用程序,通过 TCP 连接到远程服务器。使用场景是:
- 应用程序(用户)向服务器发送数据,服务器响应数据。
- 服务器可能会在不执行任何操作时向应用发送数据。
假设如果应用程序在 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/