Подтвердить что ты не робот

Получите CellID, LAC,... на iOS 8.3

Начиная с iOS 5.X, я использовал для получения радиоинформации следующие методы: Получить CellID, MCC, MNC, LAC и сеть в iOS 5.1

Но с бета-версией iOS 8.3 (и 8.3 GM) этот частный API

_CTServerConnectionCellMonitorCopyCellInfo

больше не работает.

4b9b3361

Ответ 1

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 (Permission denied)

Ответ 2

Как и в iOS 8.3, все перечисленные выше решения требуют права на работу

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

Не только ядровый монитор защищен, но, похоже, все уведомления CoreTelephony теперь требуют права на работу. Например, kCTMessageReceivedNotification также затрагивает.