4

我看到论坛上有很多关于 Apple 的可达性类的条目,但我还没有看到这个的解决方案。

我正在开发一个需要在后台模式和实时检测连接变化的 VoIP 应用程序。SCNetworkReachability API 应该可以完成这项工作,但我面临一些问题......

首先,我从 Apple (v2.2) 下载了 Reachability 示例代码,但我无法让它在后台模式下工作。如果我在模拟器上启动应用程序并插入/拔出网络电缆,效果会很好。但是,如果我尝试在设备上启动应用程序,然后进入后台模式以启用/禁用 wifi,则根本不会通知应用程序。

我在 info.plist 中设置了“应用程序不在后台运行 = NO”和“所需的后台模式 = 应用程序提供 IP 语音服务”但没有成功。此示例代码的 Donoho 版本也存在同样的问题。

第二个...我已经在我正在开发的 VoIP 应用程序(基于 Linphone)上集成了可达性示例代码,并且...在后台模式下检测到连接更改...!!!

然而,它并不总是很好地工作:

  • 如果我在打开 wifi 的情况下启动应用程序,则会检测到以下所有可达性更改,即使在后台模式下也是如此 -> OK
  • 但是如果我在没有关闭 wifi 的情况下启动应用程序,该应用程序不会检测到 wifi 恢复... -> KO

所以,问题是:

  • 如何使 Apple Reachability 示例在后台模式下工作?
  • 并且......当可达性类看起来在后台模式下工作时,为什么它只有在第一次可达性检查发现连接可用时才真正起作用?

我正在使用 iOS 5.1.1 在 iPhone4 上运行应用程序(iOS 版本 > 5.0 可能有问题......??)

我也检查了这个线程上的针对性解决方案上的针对性解决方案,但最后一个版本的可达性示例已经处理了保留/释放问题......

提前致谢

4

2 回答 2

0

我已经在这个问题上徘徊了几天,最后这个问题看起来与 NSStreamNetworkServiceTypeVoIp 连接模式密切相关,

看起来暂停的应用程序只有在与远程服务器建立活动的 NSStreamNetworkServiceTypeVoIp 连接后才能监听连接更改。

这就解释了为什么 Reachability 示例没有响应后台模式下的连接变化(应用程序内没有 NSStreamNetworkServiceTypeVoIp 连接)以及为什么 voip 应用程序在首次启动时 wifi 关闭时也没有响应......

所以,看起来这个需要某种解决方法......

于 2012-07-05T06:52:00.887 回答
-1

这种可达性 可以帮助您,它还附带示例代码。每当您的互联网出现故障或立即出现时,它都会通知您。

于 2012-07-02T14:22:04.520 回答