FXReachability是一个轻量级的可达性类,专为Mac和iOS设计。它设计得尽可能简单,没有不必要的装饰。
注意:“支持”意味着已对该版本库进行了测试。“兼容”意味着该库应该在该iOS版本上运行(即不依赖于任何不可用的SDK功能),但不再进行兼容性测试,可能需要调整或错误修复才能正确运行。
FXReachability需要ARC。如果您想在非ARC项目中使用FXReachability,只需将-fobjc-arc编译器标志添加到FXReachability.m类中。要做到这一点,转到目标设置中的构建阶段选项卡,打开编译源组合,在列表中双击FXReachability.m,并在弹出的窗口中键入-fobjc-arc。
如果您想将整个项目转换为ARC,请注释掉FXReachability.m中的#error行,然后在Xcode中运行编辑 > 重构 > 转换为Objective-C ARC...工具,并确保您希望使用ARC的所有文件都已选中(包括FXReachability.m)。
FXReachability实例设计成只能在主线程中访问。通知总会在主线程上发送,而不管FXReachability实例是在哪个线程上创建的。
要使用FXReachability,只需将类文件拖入您的项目中,并将SystemConfiguration框架添加到构建阶段。FXReachability是一个自启动的单例,因此不需要创建其实例。
FX可达性会在应用启动时自动创建并运行一个共享实例。您可以通过[FXReachability sharedInstance]
方法访问它。您不能删除此实例,但可以更改它要查找的主机,或者创建更多的FX可达性实例以查找其他主机。
要使用FX可达性,只需添加一个观察者来监听FXReachabilityStatusDidChangeNotification
通知,如下所示
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myUpdateMethod:) name:FXReachabilityStatusDidChangeNotification object:nil];
对象参数可以设置为特定的FX可达性实例,或者设置为nil以监听所有实例。在您的通知处理方法中,您可以使用以下代码来确定设备是否具有网络连接
FXReachability *reachability = notification.object;
BOOL reachable = [reachability isReachable];
或者,如果您正在使用共享的FX可达性实例,您可以直接使用以下
BOOL reachable = [FXReachability isReachable];
要获取确切的状态,请使用以下
FXReachability *reachability = notification.object;
FXReachabilityStatus status = reachability.status;
您也可以在任何时候轮询这些属性和方法以确定当前状态。
FX可达性类具有以下方法和属性
- (instancetype)initWithHost:(NSString *)hostDomain;
此方法初始化一个新的FX可达性实例,并立即开始搜索指定主机,之后将发送通知。调用者负责保留返回实例的引用。如果释放了FX可达性实例,则不会为该主机发送进一步的提示。
- (BOOL)isReachable;
此方法如果主机可达返回YES,如果不可达返回NO。请注意,可达性本质上是非常乐观的 —— 返回NO表示您绝对无法建立网络连接,但返回YES仅表示您可能可以(例如,您尝试连接的网站可能已关闭)。因此,如果状态目前未知,为了防止错误,-isReachable将返回YES。
+ (instancetype)sharedInstance;
此方法返回FX可达性类的单例共享实例。默认情况下,它设置为使用apple.com主机,但您可以重写此设置以使用不同的主机。
+ (BOOL)isReachable;
这是一个便利方法,它对共享FX可达性实例调用-isReachable
。
@property (nonatomic, readonly) FXReachabilityStatus status;
此属性返回当前的可达性状态。出于明显的原因,它是只读的。有关可能的数值列表,请参阅以下内容。
@property (nonatomic, copy) NSString *host;
此属性获取用于检查可达性的当前主机。这是一个读/写属性。设置此属性将导致FX可达性实例停止监视先前的主机并开始监视新的主机。设置此属性将立即将状态设置为FXReachabilityStatusUnknown
,但在新主机成功接入或被认为是不可接入之前,不会发送任何通知。
[FXReachability sharedInstance].status
属性是一个常量,可能具有以下值之一
FXReachabilityStatusUnknown
这意味着状态目前未知。这通常在first time that the FXReachabilityStatusDidChangeNotification
第一次触发前,但通常不会在其他情况下发生。
FXReachabilityStatusNotReachable
这意味着设备当前无法访问互联网。
FXReachabilityStatusReachableViaWWAN
这意味着设备当前有移动数据连接(例如3G),因此可能有带宽不佳和/或按量计费的数据。在这种情况下,您可能希望暂停大型下载或降低流媒体视频的质量。请注意,只有在iOS设备上此状态才受到支持 —— 使用蓝牙连接或3G调制解调器的Mac不会报告这种状态。
FXReachabilityStatusReachableViaWiFi
这意味着设备有一个WiFi或以太网宽带有线连接,并且可以假设具有适当的带宽和/或不受限制的访问。请注意,Mac即使实际上从iPhone或3G调制解调器共享移动数据连接也会报告这种情况。
版本 1.3.2
版本 1.3.1
版本 1.3
FXReachabilityNotificationHostKey
添加到通知的 userInfo 中版本 1.2
FXReachabilityNotificationPreviousStatusKey
添加到通知的 userInfo 中版本 1.1.1
版本 1.1
+isReachable
版本 1.0