测试测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2017年11月 |
由 Alexey Belkevich 维护。
SCNetworkReachability 类是对 SCNetworkReachability API 的封装,该 API 位于 SystemConfiguration.framework 中的 C 结构和 C 函数。
NSNotificationCenter
。使用回调块确定可达性状态或观察变化将 pod 'SCNetworkReachability'
添加到 Podfile
检查某些主机的当前可达性状态。此回调将在确定可达性状态后立即执行一次。 注意。回调块将在主队列中运行!
SCNetworkReachability *reachability = [[SCNetworkReachability alloc] initWithHost:@"https://github.com"];
[reachability reachabilityStatus:^(SCNetworkStatus status)
{
switch (status)
{
case SCNetworkStatusReachableViaWiFi:
NSLog(@"Reachable via WiFi");
break;
case SCNetworkStatusReachableViaCellular:
NSLog(@"Reachable via Cellular");
break;
case SCNetworkStatusNotReachable:
NSLog(@"Not Reachable");
break;
}
}];
如果您不想存储 SCNetworkReachability
实例,您可以使用类方法完成相同操作。
[SCNetworkReachability host:@"github.com" reachabilityStatus:^(SCNetworkStatus status)
{
switch (status)
{
case SCNetworkStatusReachableViaWiFi:
NSLog(@"Reachable via WiFi");
break;
case SCNetworkStatusReachableViaCellular:
NSLog(@"Reachable via Cellular");
break;
case SCNetworkStatusNotReachable:
NSLog(@"Not Reachable");
break;
}
}];
注意。iOS 只有一个不同之处,您只有一个状态 SCNetworkStatusReachable
,而不是 SCNetworkStatusReachableViaWiFi
和 SCNetworkStatusReachableViaCellular
。
观察某些主机的可达性变化。此回调将在每次可达性状态改变时执行。
SCNetworkReachability *reachability = [[SCNetworkReachability alloc] initWithHost:@"example.com"];
[reachability observeReachability:^(SCNetworkStatus status)
{
switch (status)
{
case SCNetworkStatusReachableViaWiFi:
NSLog(@"Reachable via WiFi");
break;
case SCNetworkStatusReachableViaCellular:
NSLog(@"Reachable via Cellular");
break;
case SCNetworkStatusNotReachable:
NSLog(@"Not Reachable");
break;
}
}];
有时您需要在主队列之外检查可达性。使用 Multithreading
子规格很容易做到。
将 pod 'SCNetworkReachability/Multithreading'
添加到 Podfile。
多线程
子规范允许为回调设置自定义的 dispatch 队列。因此,您可以从中选择任一方法。
- (void)observeReachabilityOnDispatchQueue:(dispatch_queue_t)queue
callback:(void (^)(SCNetworkStatus))block;
- (void)reachabilityStatusOnDispatchQueue:(dispatch_queue_t)queue
callback:(void (^)(SCNetworkStatus))block;
+ (void)hostReachabilityStatus:(NSString *)host onDispatchQueue:(dispatch_queue_t)queue
callback:(void (^)(SCNetworkStatus))block;
另一个有用的子规范是 Shared
。它为 SCNetworkReachability
类创建了共享实例。
将 pod 'SCNetworkReachability/Shared'
添加到 Podfile。
SCNetworkReachability *reachability = SCNetworkReachability.shared;
为与 Apple 的可达性兼容,我保留了两个初始化方法。我从未使用过它们,但对某些人来说可能有用。
将 pod 'SCNetworkReachability/Compatibility'
添加到 Podfile。
检测设备上的 WiFi 通信能力。仅在 iOS 上可用。
SCNetworkReachability *reachability = [[SCNetworkReachability alloc] initForLocalWiFi];
使用 IP 地址结构的可达性
struct sockaddr_in address;
// Does anybody knows how to define this structure? =)
address = ...
SCNetworkReachability *reachability = [[SCNetworkReachability alloc] initWithHostAddress:&address];
在推特上关注更新 @okolodev