Можно ли заставить приложение iOS обрабатывать запросы на подключение WatchKit, когда оно закрыто?

Я прочитал документацию по инфраструктуре подключения WatchKit, чтобы попытаться выяснить, могу ли я делегировать все потребности интенсивной обработки моему родительскому приложению iOS. Весь код уже существует в родительском приложении для выполнения требуемой обработки, и кажется, что сделать это значительно эффективнее, чем приложение Apple Watch, дублирующее код и пытающееся выполнить его самостоятельно.

Мой вопрос заключается в том, возможно ли это, если приложение на устройстве iOS не активно в то время, когда приложение комплекта часов делает запрос? Будет ли он просто ставить запрос в очередь до тех пор, пока он не будет открыт в следующий раз, или его можно настроить для немедленной обработки? Я бы хотел, чтобы часы всегда получали какой-либо ответ или имели тайм-аут по запросу.

ОБНОВЛЕНИЕ:

Я обнаружил, что моя конкретная проблема связана с вызовом обработчика ответа из фонового потока после выполнения отдельного запроса. Когда я делал это, я не получил ответа от устройства iOS на Apple Watch. Первоначально это заставило меня подумать, что устройство iOS игнорировало запросы, пока оно не было активным.

Решением для меня было сделать следующее, чтобы обработчик ответов всегда вызывался из основного потока. Кажется, это важная часть сообщения, которую я, должно быть, пропустил в документации (или, может быть, она отсутствовала :o). Короче говоря, после внесения обновления, показанного ниже, я каждый раз успешно получал ответы.

dispatch_async(dispatch_get_main_queue(), { () -> Void in
    replyHandler(myResponse) // Always call from main thread!
})

person Community    schedule 23.03.2016    source источник
comment
Да, это возможно с sendMessage. Вызов этого метода из вашего расширения WatchKit, когда он активен и работает, активирует соответствующее приложение iOS в фоновом режиме и сделает его доступным. Если вам нужна конкретная помощь, опубликуйте минимальный воспроизводимый пример вместе с описанием проблемы.   -  person    schedule 23.03.2016


Ответы (1)


sendMessage API-интерфейсы позволяют расширению WatchKit пробуждать приложение iOS в фоновом режиме, пока reachable истинно. Вот хороший пошаговое руководство по использованию sendMessage.

person ccjensen    schedule 25.03.2016
comment
Спасибо за подтверждение. Я понял, что проблема, с которой я столкнулся, связана с тем, что устройство iOS вызывает обработчик ответов в фоновом потоке (после выполнения отдельного запроса в фоновом режиме). Я обновил обработчик ответа, чтобы он всегда вызывался в основном потоке, и это, похоже, решило проблему. - person ; 25.03.2016