VCLReachability 1.2.0

VCLReachability 1.2.0

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

Verticode Labs维护。



VCLReachability 是一个 iOS 的可达性库。它旨在通过允许所有对象发布和订阅可达性事件来帮助您与网络活动事件进行接口。

基于 Apples Reachability 项目。

支持的 iOS SDK 版本

  • 支持的构建目标 - iOS 7.0

ARC 兼容性

VCLReachability 两种模式(ARC)都兼容。

目录

快速入门

有四种快速入门选项可供选择

  • 下载最新版本 并将 Classes 目录中的源代码添加到您的项目中。

  • 克隆仓库并使用示例项目

[email protected]:VerticodeLabs/VCLReachability.git
pod install
  • 通过将 VCLReachability 添加到您的 Podfile 中,使用 Cocoapods 进行安装。
pod `VCLReachability`

包含的内容

在下载中,您将找到以下文件,提供编译和压缩版本:

Classes/
└── ios/
    ├── NSObject+VCLReachabilitySubscriber.h
    └── NSObject+VCLReachabilitySubscriber.m
    └── VCLReachability.h
    └── VCLReachability.m
    └── VCLReachability.h
Examples/
├── ...
Tests/
├── ...
VCLReachability.xcodeproj/
├── ...

示例用法

重要:VCLReachability 必须使用 DNS 来解析主机名,然后才能确定该主机的 VCLReachability,这在某些网络连接上可能需要一段时间。因此,在名称解析完成之前,API 将返回 NotReachable。这种延迟在某些网络上的界面上可能会可见。

本示例中的 VCLReachability 展示了 SCNetworkReachability API 的异步使用。您可以使用该 API 同步执行,但不能在主线程上通过 hostName 执行同步检查。如果设备无法访问 DNS 服务器或处于慢速网络中,对该 SCNetworkReachabilityGetFlags 函数的同步调用可能需要长达 30 秒的时间来解析 hostName。如果在主线程上发生这种情况,则 20 秒的无操作后,应用程序看门狗将终止应用程序。

SCNetworkReachability API 暂时没有提供检测通过蓝牙支持 GameKit 对等网络的方法。

使用 VCLReachabilitySubscriber 协议

VCLReachabilitySubscriber.h 添加到您要将它变为可达性订阅者的类中。

#import "VCLReachabilitySubscriber.h"

实现协议方法

- (void)reachabilityChanged:(NSNotification *)note{...}
- (void)wifiReachabilityChanged:(NSNotification *)note{...}
- (void)internetReachabilityChanged:(NSNotification *)note{...}
- (void)hostNameReachabilityChanged:(NSNotification *)note{...}

例如...

- (void)reachabilityChanged:(NSNotification *)note
{
    VCLReachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass:[VCLReachability class]]);

    [(id<VCLReachabilitySubscriber>)self updateWithReachability:curReach forType:nil];
}

使用 VCLReachability 类别

NSObject+VCLReachabilitySubscriber.h 添加到您希望成为可达性订阅者的类中。

#import "NSObject+VCLReachabilitySubscriber.h"

VCLReachabilitySubscriber 协议方法已预先填充。默认情况下,每个订阅者都将执行 - (void)updateWithReachability:(VCLReachability *)reachability forType:(NSString*)type;,除非已经定义了其他可选协议方法。确保在您的订阅者中定义 updateWithReachability

订阅网络事件

以下方法用于订阅不同的可达性事件。

/*!
 * Subscribe change it network events
 */
+ (void)subscribeToReachabilityNotificationsWithDelegate:(id<VCLReachabilitySubscriber>) delegate;
+ (void)subscribeToReachabilityForWifiWithDelegate:(id<VCLReachabilitySubscriber>) delegate;
+ (void)subscribeToReachabilityForHostNameWithName:(NSString *)hostName delegate:(id<VCLReachabilitySubscriber>) delegate;
+ (void)subscribeToReachabilityForInternetConnectionWithDelegate:(id<VCLReachabilitySubscriber>) delegate;

例如...

- (void)viewDidLoad
{  
    [VCLReachability subscribeToReachabilityForHostNameWithName:@"google.com" delegate:self];
    [VCLReachability subscribeToReachabilityForInternetConnectionWithDelegate:self];
    [VCLReachability subscribeToReachabilityForWifiWithDelegate:self];
}

注意 确保在它们失效之前使用 VCLReachability 类的取消订阅方法取消您的代理的订阅。我建议您在 dealloc 中这样做。

变更日志

请参阅 发行版 部分以获取详细的变更日志。

错误和功能请求

有一个错误或功能请求吗?请首先阅读 问题指南 并搜索现有和已关闭的问题。如果您的 problems 或想法尚未得到解决,请 创建一个新问题

贡献

请阅读我们的 贡献指南。包括如何打开问题、编码规范和发展笔记。

此外,如果您的 pull request 包含补丁或功能,您必须包含相关单元测试。

社区

跟踪开发和更新。

版本控制

为了透明度我们的发布周期,以及努力保持向下兼容性,此项目遵循语义版本控制指南。有时我们做错了,但我们将尽可能遵循这些规则。

发行版将按照以下格式编号

<主版本>.<次版本>.<修复版本>

并按照以下指南构建

  • 破坏向后兼容性 增加主版本号 并重置次版本号和修复版本号
  • 向新版本添加新功能而不会破坏向后兼容性 增加次版本号 并重置修复版本号
  • 错误修复和杂项更改 仅增加修复版本号

有关 SemVer 的更多信息,请访问 http://semver.org/

作者

Adrian Maurer

许可证

许可协议为 MIT 协议