Axi*_*xus 2 keep-alive background-process livechat ios
我一直为 Android 编写代码,现在我希望将我的知识扩展到 iOS 开发;所以我真的很新,请耐心等待。
我知道只有一小部分应用程序可以在后台无限期运行。这些是 VoIP、音乐播放器和位置跟踪应用程序。
我想使用 XMPP 框架编写一个聊天应用程序。一切都很好,直到用户将应用程序置于后台,在这种情况下,应用程序将保持连接大约十分钟,然后被系统杀死,因此用户将无法接收新消息。
我知道有一些技巧可以让应用程序保持活力。诸如在 info.plist 文件中将其定义为音乐播放应用程序的技巧,然后无限期地播放一些空的声音。但我也知道,当该应用程序发布到 App Store 时,Apple 会拒绝该应用程序。
那么,通常情况下,其他应用程序是如何做到的呢?其他聊天应用程序如何在后台保持活动状态以接收来自服务器的新消息?像 Google Hangouts、IM+ 之类的应用程序?
理想情况下,它们并不是真正在后台运行,而是使用推送通知,正如其他人所提到的。
但是一些聊天客户端似乎做了其他事情:我已经验证(通过嗅探空闲 iOS 设备的流量)至少 Google Hangouts、Facebook 和 Skype 都在后台保持一个持久的套接字打开,并定期发送流量以保持它活着。
我怀疑他们正在使用 VoIP 例外,而不是 Apple 严格的后台执行政策。iOS 允许“VoIP 应用程序”在后台运行并保持一个套接字打开以接收有关来电和消息的通知。
也许他们也在使用 iOS 7 的新“后台获取”功能,但据我所知,这不允许持久的套接字连接。
| 归档时间: |
|
| 查看次数: |
5503 次 |
| 最近记录: |