Apple Reachability示例在后台模式下不起作用

时间:2012-07-02 10:28:41

标签: iphone voip reachability

我已经看到论坛上有很多关于Apple的Reachability Class的条目,但是我没有看到这个的解决方案。

我正在开发一款需要在后台模式和实时检测连接变化的VoIP应用。 SCNetworkReachability API应该可以胜任,但我遇到了一些问题......

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

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

第二个...我已经将Reachability示例代码集成在我正在开发的VoIP应用程序(基于Linphone)上......并且......在后台模式下检测到连接变化...... !!!

尽管如此,它始终不能很好地运作:

  • 如果我启动了启用了wifi的应用程序,则会检测到以下所有可访问性更改(即使在后台模式下) - >行
  • 但如果我在没有关闭wifi的情况下启动应用程序,该应用程序无法检测到WiFi恢复... - > KO

所以,问题是:

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

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

我已经检查了this thread上的尖端解决方案,但最新版本的Reachability样本已经处理了保留/释放问题......

提前致谢

2 个答案:

答案 0 :(得分:0)

我已经解决了这个问题好几天了,最后问题看起来与NSStreamNetworkServiceTypeVoIp连接模式密切相关,

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

这就解释了为什么Reachability样本没有响应后台模式中的连接变化(应用程序中没有NSStreamNetworkServiceTypeVoIp连接)以及为什么voip应用程序在第一次启动时无法响应wifi响应...

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

答案 1 :(得分:-1)

Reachability可能会为您提供样本代码。这会在您的互联网出现故障或立即显示时通知您。