Since iOS 5.X, I used to get radio information with these methods : Get CellID, MCC, MNC, LAC, and Network in iOS 5.1
But with the iOS 8.3 beta (and 8.3 GM), this private API
_CTServerConnectionCellMonitorCopyCellInfo
doesn't work anymore.
Apple was informed about weakness in their CoreTelephony, so now calls to CoreTelephony fail. They are checking if the caller is sandboxed, so after debug you can see:
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
However, there are still few calls which works, for example:
_CTServerConnectionCopyWakeReason
_CTServerConnectionCopyVoiceMailInfo
etc ... I haven't tried all.
The big problem now is you cannot even get a signal strength as CTGetSignalStrength
always returns 0.
And when you tried some resticted call like in your case _CTServerConnectionCellMonitorCopyCellInfo
then you can see error code in CTError
is 13 (Permission denied)
As of iOS 8.3 all of the above solutions require entitlement to work
<key>com.apple.CommCenter.fine-grained</key>
<array>
<string>spi</string>
</array>
Not only cell monitor is protected but it seems like all of the CoreTelephony notifications now require that entitlement to work. For example, kCTMessageReceivedNotification also affected.
来源:https://stackoverflow.com/questions/29533059/get-cellid-lac-on-ios-8-3