获取CellID、LAC..在iOS 8.3上



自iOS 5.X以来,我曾使用以下方法获取无线电信息:在iOS 5.1 中获取CellID、MCC、MNC、LAC和Network

但随着iOS 8.3测试版(和8.3通用汽车),这个私人API

_CTServerConnectionCellMonitorCopyCellInfo

已经不起作用了。

苹果被告知其CoreTelephony存在弱点,因此现在对CoreTelephone的调用失败。他们正在检查调用方是否是沙盒,因此在调试后,您可以看到:

Caller not allowed to perform action: TelephonyApiTest.240, action = sandboxed lookup, code = 1: Operation not permitted, uid = 501, euid = 501, gid = 501, egid = 501, asid = 0

然而,仍然有一些调用是有效的,例如:

_CTServerConnectionCopyWakeReason
_CTServerConnectionCopyVoiceMailInfo

等等。。。我还没有全部试过。

现在的大问题是,由于CTGetSignalStrength总是返回0,您甚至无法获得信号强度。

当你尝试一些重新控制的调用时,比如_CTServerConnectionCellMonitorCopyCellInfo,你可以看到CTError中的错误代码是13(权限被拒绝)

从iOS 8.3开始,所有上述解决方案都需要使用

    <key>com.apple.CommCenter.fine-grained</key>
<array>
    <string>spi</string>
</array>

不仅单元监视器受到保护,而且似乎所有的CoreTelephony通知现在都需要该权限才能工作。例如,kCTMessageReceivedNotification也受到影响。

最新更新