CoreTelephony Framework
1. CTTelephonyNetworkInfo:提供手機(jī)注冊的運(yùn)營商信息、當(dāng)前接入的無線通訊技術(shù)、切換運(yùn)營商(切換SIM卡)通知、當(dāng)前無線接入技術(shù)變更通知。
由于蘋果手機(jī)也支持了雙卡雙待,所以新API從iOS12開始支持。
以下是在不同情況下對部分api的測試。

實(shí)用場景:
? 1. 判斷手機(jī)有沒插卡:通過serviceSubscriberCellularProviders判斷:遍歷每個(gè)value,若每個(gè)CTCarrier的ISO Country Code都為nil則沒插卡,不可以Carrier name來判斷,無SIM 時(shí)Carrier name還是會有的。
2. 飛行模式是否開啟判斷:1. 首先判斷有沒插卡。2.插卡時(shí),根據(jù)serviceCurrentRadioAccessTechnology是否{}來判斷是否飛行模式。3. 沒插卡時(shí),無法判斷(有沒判斷意義?)。
3. 飛行模式開關(guān)、SIM拔插實(shí)時(shí)切換跟蹤:1.接收CTServiceRadioAccessTechnologyDidChangeNotification通知?2. 收到變更通知時(shí)再根據(jù)serviceCurrentRadioAccessTechnology是否為{}判斷是否飛行模式,根據(jù)serviceSubscriberCellularProviders判斷插卡。
代碼如下:

需要做飛行模式檢測的類:

踩過的坑:接收CTServiceRadioAccessTechnologyDidChangeNotification通知時(shí),一定要持有CTTelephonyNetworkInfo實(shí)例,否則飛行模式的開啟關(guān)閉通知可能接收不到。