编码警报时,有什么简单的方法可以在用户未连接到互联网时发出警告?我正在使用Xcode,现在当没有连接时,它只是uiwebview中的白色屏幕。
答案 0 :(得分:6)
在这里你可以检查wifi是否有连接,3g或者没有连接:
if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWiFi) {
// Do something that requires wifi
} else if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWWAN) {
// Do something that doesnt require wifi
} else if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == NotReachable) {
// Show alert because no wifi or 3g is available..
}
Apple在此处提供了所有必需的Reachability api / source:Reachability Reference
我已经在我的所有项目中为自己制作了这些自定义便利功能:
+ (BOOL)getConnectivity {
return [[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] != NotReachable;
}
+ (BOOL)getConnectivityViaWiFiNetwork {
return [[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWiFi;
}
+ (BOOL)getConnectivityViaCarrierDataNetwork {
return [[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == ReachableViaWWAN;
}
如此使用:
if ([ServerSupport getConnectivity]) {
// do something that requires internet...
else {
// display an alert
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Network Unavailable"
message:@"App content may be limited without a network connection!"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease];
[alert show];
}
答案 1 :(得分:3)
如果您的应用需要持久的互联网连接,则可以在plist文件中包含密钥UIRequiresPersistentWiFi
。使用此功能,iOS将自动在机场模式下向用户显示警报。
此外,iOS将确保您的应用程序位于前台时无法关闭/休眠wifi收音机。
答案 2 :(得分:0)
请注意,互联网连接在移动设备上非常动态(多个无线电,多个接入点,多个手机信号塔,旅行,竞争无线电干扰,“你拿错了”等),因此可达性不是很完美解决方案,因为网络连接通常可以在可达性执行检查之前,期间或之后进行更改。可达性可以直接说谎(是的,我们连接到接入点,即使宽带在接入点的另一侧死亡)也是如此。 Reachability报告没有连接也很常见,就像它自己的请求在几秒钟后打开无线电以获得良好的连接一样。
最好的办法就是尝试从网络访问数据,在等待时旋转活动指示器,并为用户提供一些API元素,如果他们最终等待的时间过长,可以放弃他们的强烈的意见,而不是某些开发人员的意见......他们比你更了解他们所在地区(重新)连接需要多长时间,以及他们愿意等多久。