Я хочу получить состояния телефонных звонков в своем приложении.
После некоторого поиска я нашел CoreTelephony
рамки. Но это не рекомендуется в iOS 10. SO есть ли другая альтернатива?
Я также нашел CallKit
. Новая инфраструктура в iOS 10. Но не получило состояний вызова от того, что я искал.получать состояния телефонных звонков в iOS 10
ответ
Apple не позволяет получить доступ к этой информации, хотя вы можете сделать это, используя сторонние библиотеки, но ваше приложение будет отклонено во время отправки в App Store, потому что яблоко не позволяет получить доступ к конфиденциальной информации пользователя.
Это неправда, информация о состояниях телефонных звонков может быть получена через открытый API. Посмотрите на другие ответы. –
Доступен некоторый метод делегата, указывающий статус входящих и исходящих вызовов.
Спасибо, приятель, я не знаю, я показываю ту же ссылку, но почему не нашел протокол. – DeathStroke
Пожалуйста, проверьте: https://developer.apple.com/reference/callkit#symbols –
Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18153914) – AMAN77
Чтобы получать уведомления о состояниях телефонного звонка, начиная с прошивкой 10, вы должны использовать CXCallObserver
класс и реализовать его метод протокола CXCallObserverDelegate
, что предлагается в this ответ:
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
if (call.hasConnected) {
// perform necessary actions
}
}
Вы можете попробовать этот код:
Создать экземпляр вызова observer
@property (nonatomic) CXCallObserver *callObserver;
Инициировать экземпляра и установить делегат
_callObserver = [CXCallObserver new]; [_callObserver setDelegate:self queue:dispatch_get_main_queue()];
Добавить делегат вызова наблюдателя
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call{ if (call == nil || call.hasEnded == YES) { NSLog(@"CXCallState : Disconnected"); } if (call.isOutgoing == YES && call.hasConnected == NO) { NSLog(@"CXCallState : Dialing"); } if (call.isOutgoing == NO && call.hasConnected == NO && call.hasEnded == NO && call != nil) { NSLog(@"CXCallState : Incoming"); } if (call.hasConnected == YES && call.hasEnded == NO) { NSLog(@"CXCallState : Connected"); } }
import CallKit
в свой AppDelegate
и добавьте следующий код:
// AppDelegate
var callObserver: CXCallObserver! // add property
// in applicationDidFinishLaunching...
callObserver = CXCallObserver()
callObserver.setDelegate(self, queue: nil) // nil queue means main thread
extension AppDelegate: CXCallObserverDelegate {
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
if call.hasEnded == true {
print("Disconnected")
}
if call.isOutgoing == true && call.hasConnected == false {
print("Dialing")
}
if call.isOutgoing == false && call.hasConnected == false && call.hasEnded == false {
print("Incoming")
}
if call.hasConnected == true && call.hasEnded == false {
print("Connected")
}
}
}
можно ли это сделать в фоновом режиме? – Why
Да, это будет работать, когда ваше приложение находится на переднем плане или на заднем плане. –
работает в фоновом режиме всего около 3 минут, а затем не работает ... Я закодировал следующее решение http: // stackoverflow.com/questions/43044035/detecting-gsm-call-states-in-ios-10-and-notification-from-background-state, где я показываю, как я вызываю его из фона. Он работает в течение 3 минут или около того, а затем не работает. Даже разместили щедрость на этом, что истекло. Теперь добавьте еще одну награду. – ankit
- 1. Выполнение телефонных звонков в приложениях на iOS
- 2. Получение телефонных звонков в Swift iOS
- 3. Блокировка нежелательных телефонных звонков, реализуемых на iOS?
- 4. Android - блокировка телефонных звонков?
- 5. Угловые окна телефонных звонков
- 6. Обнаружение телефонных звонков
- 7. Обнаружение входящих телефонных звонков
- 8. Перехват телефонных звонков jQueryMobile Ajax вызывает
- 9. Обнаружение телефонных звонков в iPhone
- 10. Нет необходимости в Macbook для телефонных звонков?
- 11. Как получить историю звонков в iOS 10
- 12. Phonegap/Android - распознавание телефонных звонков
- 13. Запись телефонных звонков на Android
- 14. Проблемы с созданием телефонных звонков
- 15. Выполнение телефонных звонков на iPhone
- 16. Функция камеры для телефонных звонков
- 17. Получить последние журналы телефонных звонков
- 18. Отслеживание загрузки SMS и телефонных звонков
- 19. Обнаружение телефонных звонков на iOS с CTCallCenter (Swift)
- 20. Пользовательские действия в журнале телефонных звонков
- 21. Ориентация Android в сборку телефонных звонков?
- 22. держать приложение в ожидании телефонных звонков
- 23. Сохранение данных телефонных звонков в БД?
- 24. Получение журналов телефонных звонков в monotouch
- 25. Несколько веб-просмотров в проектах телефонных звонков
- 26. Несколько телефонных звонков из приложения android
- 27. iPhone настройка телефона для телефонных звонков
- 28. Заявление о приеме телефонных звонков при запуске
- 29. Веб-интерфейс для совершения телефонных звонков
- 30. Поддержка телефонных звонков с помощью сервисов доступа
Что вы хотите передать словом «состояния вызова»? Не могли бы вы рассказать. –
«набор номера», «отключен», «подключен», как состояния для телефонного звонка. – DeathStroke
Итак, вы хотите, чтобы некоторые делегаты, которые дают вам такие состояния, когда произошел какой-либо переход вызова, я прав? –