監(jiān)聽網(wǎng)絡(luò)狀態(tài)
- 在日常開發(fā)中,我們經(jīng)常會遇到這種情況悄晃,需要我們對手機(jī)的網(wǎng)絡(luò)狀態(tài)進(jìn)行監(jiān)聽
- 比如:播放視頻需要提示是4G網(wǎng)絡(luò)狀態(tài)
- 那么監(jiān)聽網(wǎng)絡(luò)狀態(tài)常用的方法是:
第一種方法:
- 如果我們項(xiàng)目中使用的網(wǎng)絡(luò)訪問框架是AFNetworking(這也是日常開發(fā)中最常用的框架)玫霎,那么我們可以使用:
AFNetworkReachabilityManager
來進(jìn)行網(wǎng)絡(luò)監(jiān)聽
-
AFNetworkReachabilityManager
內(nèi)部也是使用了蘋果的Reachability
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"當(dāng)前網(wǎng)絡(luò)狀態(tài)--%zd",status);
}];
// 開始監(jiān)聽
[manager startMonitoring];
//manager.networkReachabilityStatus:獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,// 未知網(wǎng)絡(luò)
AFNetworkReachabilityStatusNotReachable = 0,// 沒有網(wǎng)絡(luò)
AFNetworkReachabilityStatusReachableViaWWAN = 1,// 蜂窩網(wǎng)絡(luò)
AFNetworkReachabilityStatusReachableViaWiFi = 2,// WiFi
};
第二種方法
- 使用蘋果的
Reachability
- 詳細(xì)介紹蘋果的示例代碼中有
- Reachability示例代碼地址
- 現(xiàn)在Reachability最新版本:5.0 支持iOS8.0及以上
// 監(jiān)聽通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
// 開始監(jiān)聽網(wǎng)絡(luò)
self.reachability = [Reachability reachabilityForInternetConnection];
[self.reachability startNotifier];
- (void)getNetworkStatus
{
// 獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)
self.reachability.currentReachabilityStatus
}
typedef enum : NSInteger {
NotReachable = 0, // 無網(wǎng)絡(luò)
ReachableViaWiFi, // WiFi
ReachableViaWWAN // 蜂窩網(wǎng)絡(luò)
} NetworkStatus;
- (void)dealloc
{
// 移除監(jiān)聽
[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
[self.reachability stopNotifier];
self.reachability = nil;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者