Можно ли принимать звонки с помощью CallKit в симуляторе iOS?

В iOS можно отобразить пользовательский интерфейс входящего вызова с помощью reportIncomingCall CallKit.

В моем случае на физическом устройстве это работает должным образом. Мой iPhone получает уведомление о входящем звонке, и я могу либо принять звонок, либо отклонить звонок.

Однако, похоже, это не работает в симуляторе iOS. В частности, сам вызов метода reportNewIncomingCall завершается успешно, но затем он немедленно завершается (я даже не вижу никаких предупреждений о вызове). Кроме того, func provider(_ provider: CXProvider, perform action: CXEndCallAction) вызывается из CXProviderDelegate, что означает завершение вызова.

Я не смог найти в официальной документации Apple, можно ли протестировать CallKit - reportIncomingCall в iOS Simulator.

Как ни странно, исходящий вызов с reportOutgoingCall с CXCallController, кажется, работает нормально в симуляторе, так как я вижу зеленую строку состояния в верхней части iPhone, когда CXStartCallAction выполняется.

Так что единственное, что у меня не получилось, это получение вызова CallKit в симуляторе iOS. Это ожидаемое поведение?


person user482594    schedule 30.12.2020    source источник


Ответы (1)


CallKit вообще не работает на симуляторах iOS, не принимает и не совершает звонки. Запуск любого CXTransaction, содержащего CXStartCallAction или CXAnswerCallAction на симуляторе, немедленно завершится ошибкой со значением NSError.Code, равным CXErrorCodeRequestTransactionErrorUnknown (ноль). Вам нужно будет использовать настоящее устройство для тестирования вашего приложения CallKit.

И да, я не нашел упоминания об этом ни в одной документации Apple. В этой статье упоминаются различия между симуляторами и реальными устройствами, CallKit не упоминается.

Также обратите внимание, что в симуляторах нет пользовательского интерфейса вызовов (панель набора номера и недавние вызовы).

person Ashraf Sabry    schedule 11.02.2021