在iOS 8.3上获取CellID,LAC,....

时间:2015-04-09 08:04:06

标签: ios radio iphone-privateapi core-telephony cellid

自iOS 5.X以来,我曾经使用这些方法获取无线电信息:Get CellID, MCC, MNC, LAC, and Network in iOS 5.1

但是使用iOS 8.3 beta(和8.3 GM),这个私有API

  

_CTServerConnectionCellMonitorCopyCellInfo

不再工作了。

2 个答案:

答案 0 :(得分:11)

苹果被告知他们的CoreTelephony存在缺陷,因此现在对CoreTelephony的调用失败了。他们正在检查调用者是否为沙盒,因此在调试之后您可以看到:

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(权限被拒绝)

答案 1 :(得分:1)

从iOS 8.3开始,上述所有解决方案都需要工作权利

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

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