我想查看我是否在iOS上使用Cocoa Touch库或使用Cocoa库在macOS 上建立了Internet连接.
我想出了一个方法,使用一个NSURL.我这样做的方式似乎有点不可靠(因为即使谷歌有一天会失败并依赖第三方看起来很糟糕),而且如果谷歌没有回应,我可以查看其他网站的回复,在我的应用程序中看起来似乎很浪费并且不必要的开销
- (BOOL) connectedToInternet
{
NSString *URLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]];
return ( URLString != NULL ) ? YES : NO;
}
Run Code Online (Sandbox Code Playgroud)
我做得不好,(更不用说stringWithContentsOfURL在iOS 3.0和macOS 10.4中被弃用)如果是这样,有什么更好的方法来实现这一目标?
是否有Apple框架捆绑包来检测是否存在互联网连接?目前我的应用程序在尝试在没有互联网连接的情况下对用户的位置进行地理定位时崩溃.
/*inside locationManager didUpdateLocations method*/
var currentLocation:CLLocation? = locations[0] as? CLLocation
geocoder = CLGeocoder()
//Crashes on line below when there isn't an internet connection
//Need to add function to check if internet connection is live
//Before running reverseGeocodeLocation
geocoder.reverseGeocodeLocation (currentLocation,handleGeocode)
Run Code Online (Sandbox Code Playgroud)
我对swift和ios编程有点新鲜 - 我的道歉.
我只需要在开始与我的iphone应用程序中的服务通信之前检查互联网连接可用性.我使用Swift 1.2和Xcode 6作为我的开发环境......
我刚做了一些研究,发现这个stackoverflow LINK 在目标C中.
因此,我只是试图在SWIFT中找到类似的解决方案,并找到以下链接
https://coderwall.com/p/mhxbpq/checking-for-internet-connection-availability
只是为了让事情变得简单,该链接中的内容如下......
import Foundation
import SystemConfiguration
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue()
}
var flags: SCNetworkReachabilityFlags = 0
if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 {
return false
}
let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0 …Run Code Online (Sandbox Code Playgroud) 嗨如何在未连接到互联网时显示警报?iOS版
未连接到互联网意味着没有wifi,没有连接到远程主机(www.google.com)
没有蜂窝数据网络
因为我看到许多应用程序在我没有连接到互联网时显示此消息.
我已经尝试从apple dev资源下载Reachability,但它没有给我我想要将代码实现到我的.h .m文件中.
希望得到答复.
在我为iOS 5创建的程序中,我遇到了NSURL的checkResourceIsReachableAndReturnError方法的意外行为.
我创建了一个新项目来验证问题并仅包含代码:
NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];
NSError *err = nil;
if([url checkResourceIsReachableAndReturnError:&err]){
NSLog(@"URL is reachable");
}else {
NSLog(@"URL is not reachable");
}
Run Code Online (Sandbox Code Playgroud)
此外,我试过:
NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];
NSError *err = nil;
[url checkResourceIsReachableAndReturnError:&err];
if(err == nil){
NSLog(@"URL is reachable");
}else {
NSLog(@"URL is not reachable");
}
Run Code Online (Sandbox Code Playgroud)
...仍然无济于事.结果始终是"URL无法访问",与stackoverflow.com(以及我测试的其他域)相比,显然是可以访问的.如何利用此功能检查资源是否可达?
我正在开发一个处理Web服务的iOS应用程序.我正在使用此代码来检测我是否有网络连接.如果我没有互联网连接,我将展示一个视图,说明没有互联网连接(类似于iOS应用商店的方式).我的问题是,我不确定将此代码放入哪种方法.
我希望每次用户打开应用程序和/或使用其他应用程序切换到应用程序(即我的应用程序在后台打开并且用户切换到它)时,它会检查网络状态.我认为把它放在我的应用程序委托会工作,但它没有.我还考虑将它放在我的每个视图控制器viewWillAppear方法中,但是没有用.
知道在哪里放这个代码?
这是一个例子:
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
if (internetStatus != NotReachable) {
// Internet is reachable. Start download in background.
} else {
// Create UIAlertView and tell user there is no functional internet!
}
Run Code Online (Sandbox Code Playgroud)
问题:我听说在某些情况下WiFi" 可能需要VPN on Demand连接 ".那么我该如何正确地通知用户有关无功能的互联网连接?我假设上面的代码不足以解决这个问题.
ios ×7
reachability ×3
iphone ×2
swift ×2
cfnetwork ×1
cocoa ×1
cocoa-touch ×1
connection ×1
ios4 ×1
ipad ×1
macos ×1
nsurl ×1
objective-c ×1
uialertview ×1