需要 https 或 *** (ios) 的可达性类和主机名

Posted

技术标签:

【中文标题】需要 https 或 *** (ios) 的可达性类和主机名【英文标题】:Reachability class and hostnames that require https or *** (ios) 【发布时间】:2013-06-07 06:12:46 【问题描述】:

我已经成功实现了 Reachability 类。但是,在我的应用程序中,我想在无法连接到我们的服务器时通知用户(但常规互联网正在运行)。

Reachability 报告 iPhone 可以成功访问主机名,但我认为它可能会返回错误 b/c 我不在经过身份验证的网络上:

我使用的主机名是“foreverfreebank.com”。同样,Reachability 的主机名检查报告成功。

然而,

--通过网络访问本站,需要在浏览器中使用https,即'https://foreverfreebank.com'

可达性是否考虑了这种情况?还是协议部分('https')不重要?

如果您在 Firefox 浏览器中输入“http://foreverfreebank.com”(省略“s”),我会感到困惑。也就是说,http:// 不应该是可访问的。

同样,我有另一个需要 *** 访问才能访问该站点的站点:http://checksforever.com。当我尝试使用主机名:“checksforever.com”时,即使我不在 *** 上,Reachability 也会报告成功。

这是预期的行为吗?谢谢

【问题讨论】:

【参考方案1】:

您需要检查特定端口(在本例中为 443)的可达性。这是 Reachability API 不支持的。请参阅this question 或this。

文档中的相关部分:

当一个数据包由一个远程主机发送时,远程主机被认为是可达的。 应用程序进入网络堆栈,可以离开本地设备。 可达性并不能保证数据包实际上是 主机收到。

所以,基本上 Reachability 不会测试远程主机是否接受传入连接。为此,我怀疑您需要打开 URL 连接并等待超时/其他错误。

【讨论】:

感谢这些链接。我不知道需要做出明确的区分。可达性意味着 iPhone 可以发送数据包,但它没有说明主机是否可以回复(也称为 ping 功能)。那么远程主机功能与检查一般互联网连接的意义何在? Reachability 比简单检查 WiFi/3G 是否连接更进一步。 (现在我想起来了,这是检查 WiFi 连接的唯一方法,不是吗?)。或许developer.apple.com/library/mac/#samplecode/SimplePing/… 可以帮到你。

以上是关于需要 https 或 *** (ios) 的可达性类和主机名的主要内容,如果未能解决你的问题,请参考以下文章

可达性 iOS 无法正常工作

如何在互联网可达性上使用 ios 快速更改状态栏颜色?

iOS5需要ARC的可达性版本

ios - 可达性通知多个警报

iOS 可达性错误不会显示

应用程序处于后台时的 iOS 可达性