从 iOS 5.X 开始,我使用以下方法获取无线电信息:Get CellID, MCC, MNC, LAC, and Network in iOS 5.1
但是对于 iOS 8.3 beta(和 8.3 GM),这个私有 API
_CTServerConnectionCellMonitorCopyCellInfo
不再起作用了。
从 iOS 5.X 开始,我使用以下方法获取无线电信息:Get CellID, MCC, MNC, LAC, and Network in iOS 5.1
但是对于 iOS 8.3 beta(和 8.3 GM),这个私有 API
_CTServerConnectionCellMonitorCopyCellInfo
不再起作用了。
Apple 被告知其 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(权限被拒绝)
从 iOS 8.3 开始,上述所有解决方案都需要授权才能工作
<key>com.apple.CommCenter.fine-grained</key>
<array>
<string>spi</string>
</array>
不仅单元监视器受到保护,而且似乎所有 CoreTelephony 通知现在都需要该权利才能工作。例如,kCTMessageReceivedNotification 也受到影响。