gpt4 book ai didi

iOS 可访问性表示在 3g 上没有互联网连接时可访问

转载 作者:可可西里 更新时间:2023-11-01 05:41:29 24 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,每当我调用我的网络服务时,我都想确保用户已连接到互联网。

我在 github 上使用了 Tony Million 提供的 Reachability 类,链接是她提供给任何想要获取它的人。 https://github.com/tonymillion/Reachability

我只是按照示例并设置了所有内容并具有以下代码

Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];

reach.reachableBlock = ^(Reachability*reach)
{
// call web service here
};

reach.unreachableBlock = ^(Reachability*reach)
{
// alert user not reachable
};

[reach startNotifier];

现在我在模拟器中对此进行测试,一切正常,连接到 wifi 时会调用我的服务。如果我关闭 wifi,我会看到显示的警报,这正是我需要的。

现在我在设备上对此进行了测试并获得了不错的结果,但并不是我所需要的。需要注意的是,我的手机没有数据包。

场景是这样的

  • 我将手机连接到 wifi 并运行该应用程序,非常完美,已调用网络服务。没什么好担心的。
  • 我断开手机与 wifi 的连接并再次运行该应用程序,我本以为会出现警报,告诉我它未连接,但随后我看到 UI 事件指示器在我的应用程序中旋转,这意味着该应用程序已检测到连接某种并正在尝试连接到我的网络服务。但这永远不会发生,我知道它正在检测蜂窝 3g,因为我进入设置->常规->使用->蜂窝使用,将统计数据重置为 0。过了一会儿,我可以看到正在发送和接收的数据。
  • 我转到“设置”->“通用”->“蜂窝网络”->“关闭 3g”,运行应用程序,现在它显示无连接警报。

我知道很多人都有数据包,而且我也看到应用程序以我上面提到的可达性水平进入市场,我只是觉得这在我刚才解释的场景中可以改进。

我有 3g 连接,但我不知道如何连接

[Reachability reachabilityWithHostname:@"www.google.com"]; 

被 ping 到,或者可能不是?

虽然我确实关闭了我的 wifi 并打开了 safari,但它的行为方式相同,它显示加载了很长一段时间然后只是说 safari 无法打开......

这只是无法完成的事情吗?

最后,我什至看到了 github 页面上提供的示例 Tony Million,当在我的手机上运行时,尽管 wifi 已关闭且我没有数据包,但它显示可访问。

我查看了一些堆栈溢出答案,其中用户询问检查互联网连接,但大多数答案要么围绕“类型”wifi、wwan 等,而不是检测它是否是有效的互联网连接而不是连接到网络。

感谢您的宝贵时间。

最佳答案

经过几天的研究,我找到了一个对我有用的解决方案,希望将来有人会发现它有用。

我用上面的可达性代码创建了一个单例类,这样我就可以使用它并在我轻松进行网络调用时检查它。虽然这并没有像我之前提到的那样解决我的问题,但这是第一次检查。

然后我继续进行常规操作以从 url 获取数据

NSdata * data [NSData dataWithContentsOfURL:myurlhere];
if([data length] == 0)
{
show alert view here
}
else
{
doing stuff with the items in data
}

因此,结合使用可达性(这在某些情况下并不总是有效,例如我的蜂窝网络使用 3g 或 4g)和检查下载的数据可以作为应用程序的一个很好的检查点。

关于iOS 可访问性表示在 3g 上没有互联网连接时可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com