Определите, может ли устройство одновременно вызывать и передавать данные - PullRequest
4 голосов
/ 29 ноября 2011

Моему приложению iPhone необходимо набрать номер телефона и отправить некоторые данные на удаленный сервер.

Важно, чтобы я:

  1. Запустить вызов, а затем
  2. установить фоновую задачу, которая будет взаимодействовать с моим сервером

Я разрабатывал / тестировал телефон AT & T, у которого нет проблем с отправкой данных в фоновом режиме во время телефонного звонка.

Однако клиенты Verizon не имеют возможности вызывать и передавать данные, поэтому для них я бы хотел изменить порядок операций.

Какой лучший способ определить, какой маршрут мне нужно выбрать? Я видел примеры просмотра номера модели iPhone, и если он равен 3,3, это означает, что это Verizon, поэтому я могу продолжить, но это не кажется надежным или будущим доказательством. Является ли Verizon единственным перевозчиком, который в настоящее время имеет это ограничение? Похоже, должно быть какое-то свойство, например -[UIDevice isMultiTaskingSupported].

1 Ответ

1 голос
/ 29 ноября 2011

Нет такого замечательного однострочного, как упомянутый вами UIDevice метод, но есть фреймворк Core Telephony . Я не использовал его сам, но, кажется, вы могли бы использовать класс CTCarrier, чтобы выяснить это, в частности свойство mobileNetworkCode. Этот список должен помочь вам начать. Судя по всему, для некоторых операторов вы можете использовать этот код, чтобы определить, используете ли вы EDGE или нет. Для сетей CDMA или EDGE ответом будет «нет» для одновременной потоковой передачи голоса и данных, но для сетей GSM, которые не EDGE, вам хорошо. Вы также можете просто использовать свойство carrierName и искать «AT & T», но это не учитывает EDGE.

Есть ли хорошее решение? Наверное, нет.

...