以前ios9上只有蜂窩訪問許可權,不過預設都是允許訪問,可以自行去設定裡面關閉。
所以為了防止使用者在第一次彈窗的時候點了不允許而後面不能正常連線網路的情況,做出了相應的處理。(由於蘋果並沒有給出相應的api,無法獲知使用者在第一次是否點了允許還是不允許,所以通過間接的方式去判斷,有誤判,不過都是極少情況的概率出現)
afnetworkreachabilitystatusnotreachable,即表示當前網路不可用。
然後在對此情況做出兩種判斷:
wifi:
- (nsdictionary
*)fetchssidinfo
nsdictionary
*info =
nil;
for(nsstring
*ifnam
inifs) }
return
info; }
如果獲取到的info不為nil,則當前是wifi情況下沒有網路連線。
蜂窩:獲取運營商資訊
- (nsstring
*)fetchmobileinfo
可以去判斷是否為2g,2g情況下我是直接排除判斷範圍,因為2g環境下有可能會出現發生了網路請求,但是系統沒有彈窗。
然後用了乙個ios9的api去判斷當前設定的蜂窩允許狀態:(使用者第一次彈窗選擇了不允許,是指蜂窩和無線都不允許,那麼可以通過這個蜂窩的狀態間接去判斷)
- (void
)startvalidatenetworkauthorization:(
networkauthorizationstatus
)block ; };
} 通過上面的判斷最後可以得出在wifi情況下/蜂窩非2g情況下到登陸頁面無網路連線,並且蜂窩狀態是被拒絕的狀態,就這樣得出使用者在第一次彈窗的時候點了不允許。
判斷條件是ios10以上,然後再通過keychain儲存了乙個值,只在第一次安裝的時候才去判斷,其他時候不用管。
存在誤判情況:
1、完全無網模式下進入應用,包括關閉wifi、蜂窩,或者是直接飛行模式進入,當然這種情況下比較少。
2、有wifi但是wifi是不能聯網的,也是比較少見。
所以通過這種方式可以減少誤判範圍,最主要的原因蘋果只針對國行才有這個許可權,沒有給出相應的api。
有一種方式可以判斷是否是飛行模式下進入應用:
- (void
)checknetworkconnecttest }
如果獲取到的flags是0,就是相當於關閉蜂窩和無線,或者飛行模式進入,在這裡我沒有用,畢竟覺得佔少數可以不用去考慮。
iOS10 許可權崩潰問題
的key,value新增乙個描述。1,在專案中找到info.plist檔案,右擊有個 open as,以source code 的形式開啟 2,分別複製 以下 value 和key,key 一定不能錯,value 貌似可以隨便填寫 相機許可權描述 nscamerausagedescription c...
iOS 10許可權設定
ios 10發布以來,蘋果公司為了使用者的資訊保安,在訪問內部應用都加入了隱私權限設定,讓使用者來選擇是否使用。如果在開發中不對這些許可權進行設定的話造成crash。在程式的info.plist中新增如以下設定 可以從下表中選擇相應許可權進行配置 許可權info.plist中key info.pli...
iOS10 許可權配置
公升到ios10之後,需要設定許可權的有 日曆許可權 privacy calendars usage description 定位許可權 privacy location when in use usage description 定位許可權 privacy location always usag...