公司專案需要精確傳遞2g、3g、4g、wifi網路狀態引數,所以就想到了蘋果的reachability
。但今天被reachability給坑了,初始化的時候使用 +reachabilitywithhostname:@」方法,結果每次檢測到的結果都是無網路。所以記下來這個坑,分享給大家。
1
2
3
4
5
6
7
8
#import
<
uikit
/uikit.h
>
#import
"reachability.h"
@inte***ce
:uiresponder
<
>
@property
(strong
,nonatomic
)uiwindow
*window
; @
property
(strong
,nonatomic
)reachability
*hostreach
; @
end
在.m檔案中實現檢測方法 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 實時監測網路情況
-(void
)setupreachability
// 網路狀態改變的通知方法
-(void
)reachabilitychanged:(
nsnotification*)
notification
break;
case
reachableviawifi:
wslog(@
"wifi");
break;
case
kreachablevia2g:
wslog(@
"2g");
break;
case
kreachablevia3g:
wslog(@
"3g");
break;
case
kreachablevia4g:
wslog(@
"4g");
break; } }
然後在程式啟動就開啟監聽,這樣我們就能夠監聽到網路狀態的實時改變了。
1
2
3
4
5
6 -(
bool):
(*)didfinishlaunchingwithoptions:(
nsdictionary*)
launchoptions
當然,我們使用的時候一般並不只是為了知道網路狀態改變,而是要根據網路狀態做一些事件,這樣我將監聽封裝在專案的網路工具類中。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*** 獲取網路狀態
** @return 返回 0未知 1wifi 22g 33g 44g*/-
(nsinteger
)getcurrentreachability
return
status;
}我們在使用的時候直接呼叫網路工具類的 -getcurrentreachability方法來獲取當前網路狀態,再做一些針對性的操作。
用Reachability實時監聽網路的變化
在 didfinishlaunchingwithoptions中增加如下 使用通知中心監聽kreachabilitychangednotification通知 nsnotificationcenter defaultcenter addobserver self selector selector ...
推拉結合實現 準 實時推送
rocketmq consumer從broker的consumerqueue中拉取未消費的訊息時,採用長輪詢機制 push模式 即如果存在直接返回,如果不存在未消費的訊息,broker端會hold住此請求30s,在hold期間如果reputmessageservice往consumerqueue推送...
官方Reachability說明
1.示例說明 此示例用於演示關於如何使用systemconfiguratio reachalility程式介面來判定相關的網路連線狀態及狀態變化,所以在使用此示例中的reachability.h m 檔案於自有的專案中的前提是必須引入systemconfiguration.framework。2.首...