【问题标题】:Apple Reachability sample doesn't work in background modeApple 可达性示例在后台模式下不起作用
【发布时间】:2012-07-02 18:16:31
【问题描述】:

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

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

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

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

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

尽管如此,它并不总是很好用:

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

所以,问题是:

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

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

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

提前致谢

【问题讨论】:

  • 您对此有什么解决方案吗?我也面临同样的问题..寻找解决方案

标签: iphone voip reachability


【解决方案1】:

这个Reachability 可以帮助你,它还附带了示例代码。当你的互联网出现故障或立即出现时,它会通知你。

【讨论】:

  • 感谢 Shantanu,但这个示例代码正是我正在测试但没有成功的代码。我正在测试代码而没有任何更改,所以我无法解释为什么它在后台模式下无法按预期工作......
【解决方案2】:

我在这个问题上纠结了几天,最后这个问题看起来与 NSStreamNetworkServiceTypeVoIp 连接方式密切相关,

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2021-05-02
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多