CoreTelephony Framework
1. CTTelephonyNetworkInfo:提供手机注册的运营商信息、当前接入的无线通讯技术、切换运营商(切换SIM卡)通知、当前无线接入技术变更通知。
由于苹果手机也支持了双卡双待,所以新API从iOS12开始支持。
以下是在不同情况下对部分api的测试。
实用场景:
1. 判断手机有没插卡:通过serviceSubscriberCellularProviders判断:遍历每个value,若每个CTCarrier的ISO Country Code都为nil则没插卡,不可以Carrier name来判断,无SIM 时Carrier name还是会有的。
2. 飞行模式是否开启判断:1. 首先判断有没插卡。2.插卡时,根据serviceCurrentRadioAccessTechnology是否{}来判断是否飞行模式。3. 没插卡时,无法判断(有没判断意义?)。
3. 飞行模式开关、SIM拔插实时切换跟踪:1.接收CTServiceRadioAccessTechnologyDidChangeNotification通知 2. 收到变更通知时再根据serviceCurrentRadioAccessTechnology是否为{}判断是否飞行模式,根据serviceSubscriberCellularProviders判断插卡。
代码如下:
需要做飞行模式检测的类:
踩过的坑:接收CTServiceRadioAccessTechnologyDidChangeNotification通知时,一定要持有CTTelephonyNetworkInfo实例,否则飞行模式的开启关闭通知可能接收不到。