iOS開発-コードコールによるネットワークのモニタリング機能(AFNetworkReachabilityManagerベースのパッケージ)
3616 ワード
私たちはappを開発する際によくネットモニタリングの機能を使って、ネットの状態を判断し、異なる状態によって異なるイベントを処理します.例えば、WIFI接続時にハイビジョン画像をダウンロードし、4 Gトラフィック接続時にサムネイルだけをダウンロードし、ネットがない時にキャッシュデータを表示します.
アップルは、開発者がネットワークの状態を検出するのに便利なReachabilityというサンプルプログラムを公式に提供しており、自分でダウンロードして見ることができます.https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
しかし筆者はサードパーティのAFNetWorkingの中のAFNetworkReachabilityManagerというクラスを利用して、ネットワークのモニタリングを実現するのが好きなので、このクラスを再度カプセル化して、SZKNetWorkUtilsにカプセル化して、1つのコード呼び出しを実現してネットワークの状態を判断することができて、簡単で使いやすくて、みんなに分かち合います.(AFNetworkingというサードパーティがプロジェクトにインポートされたことを前提とし、AFNetWorkingリンク:https://github.com/AFNetworking/AFNetworking)
ViewControllerでmインポート
1つのコード呼び出しは、netStateをblockで返し、1は携帯電話のトラフィックがインターネットに接続されていることを示し、2はWIFIがインターネットに接続されていることを示し、0または-1はネットワークがないことを示し、netStateが傍受されていることを示し、netStateが変更されると自動的に対応する方法が実行されます.
実現方法:SZKNetWorkUtils.h
SZKNetWorkUtils.mにインポート
コードは比較的簡単で、皆さんは直接コピーして貼り付けることができて、完全なdemoをダウンロードすることができて、好きならstarの下で.SZKNetWorkUtilsリンク:https://github.com/18811314750/SZKNetWorkUtils
筆者の他の記事:iOSオンライン音楽再生SZKAVplayer(AVPlayerベースのパッケージ)http://www.jianshu.com/p/4e0ac2898de0
iOS開発-カメラとアルバムをすばやく呼び出し、砂箱の写真の保存と読み取りを実現http://www.jianshu.com/p/7ffc8844e956
iOS開発-コマンドライン実装によるGitHubへのローカルコードのアップロードhttp://www.jianshu.com/p/79b94add9057
iOS開発-コードコールによるキャッシュのクリーンアップ機能http://www.jianshu.com/p/5ebe4f21c486
不足や間違いがあれば、読者の皆様のご指摘をお待ちしております.QQ/微信:790057066.号:iOS_ケイ:http://www.jianshu.com/users/86b0ddc92021/latest_articlesGitHub個人ホームページ:https://github.com/18811314750皆さん、いらっしゃいませ、star、読んでくれてありがとう.
アップルは、開発者がネットワークの状態を検出するのに便利なReachabilityというサンプルプログラムを公式に提供しており、自分でダウンロードして見ることができます.https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
しかし筆者はサードパーティのAFNetWorkingの中のAFNetworkReachabilityManagerというクラスを利用して、ネットワークのモニタリングを実現するのが好きなので、このクラスを再度カプセル化して、SZKNetWorkUtilsにカプセル化して、1つのコード呼び出しを実現してネットワークの状態を判断することができて、簡単で使いやすくて、みんなに分かち合います.(AFNetworkingというサードパーティがプロジェクトにインポートされたことを前提とし、AFNetWorkingリンク:https://github.com/AFNetworking/AFNetworking)
ViewControllerでmインポート
#import "SZKNetWorkUtils.h"
1つのコード呼び出しは、netStateをblockで返し、1は携帯電話のトラフィックがインターネットに接続されていることを示し、2はWIFIがインターネットに接続されていることを示し、0または-1はネットワークがないことを示し、netStateが傍受されていることを示し、netStateが変更されると自動的に対応する方法が実行されます.
[SZKNetWorkUtils netWorkState:^(NSInteger netState) {
switch (netState) {
case 1:{
NSLog(@" ");
}
break;
case 2:{
NSLog(@"WIFI ");
}
break;
default:{
NSLog(@" ");
}
break;
}
}];
実現方法:SZKNetWorkUtils.h
#import
#import
typedef void(^netStateBlock)(NSInteger netState);
@interface SZKNetWorkUtils : NSObject
/**
*
*
* @param block
*
* @return
*/
+(void)netWorkState:(netStateBlock)block;
@end
SZKNetWorkUtils.mにインポート
#import "AFNetworkReachabilityManager.h"
#pragma mark----
+(void)netWorkState:(netStateBlock)block;
{
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
// : , startMonitoring
[manager startMonitoring];
//
__block typeof(self) bself = self;
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if (status==0||status==-1) {
//
[bself showWarningView];
// netState block
block(status);
}else{
// netState block
block(status);
}
}];
}
#pragma mark---
+(void)showWarningView
{
UIAlertView *alter=[[UIAlertView alloc]initWithTitle:@" " message:@" , " delegate:self cancelButtonTitle:@" " otherButtonTitles:@" ", nil];
[alter show];
}
#pragma mark---alertView
+(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==0) {
NSLog(@" ");
}else{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
}
コードは比較的簡単で、皆さんは直接コピーして貼り付けることができて、完全なdemoをダウンロードすることができて、好きならstarの下で.SZKNetWorkUtilsリンク:https://github.com/18811314750/SZKNetWorkUtils
筆者の他の記事:iOSオンライン音楽再生SZKAVplayer(AVPlayerベースのパッケージ)http://www.jianshu.com/p/4e0ac2898de0
iOS開発-カメラとアルバムをすばやく呼び出し、砂箱の写真の保存と読み取りを実現http://www.jianshu.com/p/7ffc8844e956
iOS開発-コマンドライン実装によるGitHubへのローカルコードのアップロードhttp://www.jianshu.com/p/79b94add9057
iOS開発-コードコールによるキャッシュのクリーンアップ機能http://www.jianshu.com/p/5ebe4f21c486
不足や間違いがあれば、読者の皆様のご指摘をお待ちしております.QQ/微信:790057066.号:iOS_ケイ:http://www.jianshu.com/users/86b0ddc92021/latest_articlesGitHub個人ホームページ:https://github.com/18811314750皆さん、いらっしゃいませ、star、読んでくれてありがとう.