在this问题之后,背景网络也是如此。关于如何在应用程序处于后台时使用新的VoIP API保持网络连接正常运行的文档非常简短。
文档说要将VoIP字符串添加到info.plist
,使用
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
当数据进入通道时,操作系统将自动从后台唤醒您的应用程序。
但事实并非如此。如果新数据到达流上,则不会唤醒应用程序。如果我手动唤醒应用程序而不是系统通知应用程序在应用程序被暂停时到达的最后数据安全。
Apple指出,当您为VoIP使用配置流时,系统会在您的应用程序暂停时接管底层套接字的管理。这种到系统的切换对您的应用程序是透明的。如果在您的应用程序暂停时新数据到达,系统会唤醒您的应用程序,以便它可以处理数据。所以,我的问题与我提到的其他帖子一样:他们在做什么,我错过了?
答案 0 :(得分:1)
事实证明,文档确实非常简短,而且遗漏的一件事是只有设备实现了此功能,而模拟器却没有。