FXReachability 1.3.2

FXReachability 1.3.2

测试已测试
语言语言 Obj-CObjective C
许可证 zlib
发布最后发布2016年2月

Nick Lockwood维护。



  • 作者
  • Nick Lockwood

目的

FXReachability是一个轻量级的可达性类,专为Mac和iOS设计。它设计得尽可能简单,没有不必要的装饰。

支持的iOS及SDK版本

  • 支持的构建目标 - iOS 9.2 / Mac OS 10.11 (Xcode 7.2, Apple LLVM 编译器 7.0)
  • 最早支持的部署目标 - iOS 7.0 / Mac OS 10.10
  • 最早兼容的部署目标 - iOS 4.3 / Mac OS 10.6

注意:“支持”意味着已对该版本库进行了测试。“兼容”意味着该库应该在该iOS版本上运行(即不依赖于任何不可用的SDK功能),但不再进行兼容性测试,可能需要调整或错误修复才能正确运行。

ARC 兼容性

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,但在新主机成功接入或被认为是不可接入之前,不会发送任何通知。

FX可达性状态

[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

  • 添加了设置和获取用于可达性测试的主机的功能
  • 添加了使用不同主机创建新的/多个 FXReachability 实例的能力
  • FXReachabilityNotificationHostKey 添加到通知的 userInfo 中
  • 现在需要使用 Automatic Reference Counting (ARC)

版本 1.2

  • FXReachabilityNotificationPreviousStatusKey 添加到通知的 userInfo 中

版本 1.1.1

  • 现在符合 -Weverything 警告级别

版本 1.1

  • 添加了便利方法 +isReachable

版本 1.0

  • 首次发布