WatchKit InterfaceController условно воспроизводит тактильно в sendMessage:replyHandler:
Я хочу проверить контроллер интерфейса, чтобы убедиться, что он все еще находится на переднем плане, когда я получаю ответ от телефона. Если это так, выполните тактильное действие, чтобы пользователь знал, что он закончил работу.
sendMessage:replyHandler:
это то, что я использую для связи с телефоном, но возвращение может занять много времени. InterfaceController
настроен быть WCSessionDelegate
, Это может занять достаточно много времени, чтобы пользователь мог опустить запястье до завершения. В этом случае я хочу поймать тактильного, чтобы не выстрелить. На данный момент гаптик может стоять в очереди, а затем играть в случайное время в будущем, что бесполезно.
Я настроил уведомление для отправки, но оно отображается только в том случае, если приложение не показывает часы. Следовательно, почему я должен выяснить интерфейсный контроллер на экране, прежде чем пытаться играть в тактику.
2 ответа
Сначала я бы подумал об улучшении кода iOS, поэтому ответ не займет много времени.
Однако вы можете включить текущую дату в ответное сообщение, а затем проверить обработчик ответа, чтобы увидеть, был ли ответ незамедлительным, прежде чем воспроизвести тактильное сообщение. Это предотвратит воспроизведение в будущем, если ответ будет обработан, когда ваше приложение станет активным.
Кстати, контроллер интерфейса будет на экране, так как он выполняет обработчик ответа.
Шаги, которые я бы предложил.
sendMessage:replyHandler:
от Наблюдения, чтобы отправить запрос Задачи, который попросит телефон выполнить некоторое длительное задание.- На часах с этим Зовом сделайте немного BOOL, скажем
shouldUpdatePhone = YES
- Теперь учтите, что ваша задача выполняется, а Watch отключается, в этом случае ваш флаг (
shouldUpdatePhone
) - ДА, просто повторите вызов и скажите iPhone, что Screen теперь неактивен. - Если после этого долгое задание будет выполнено, у вас будет информация о том, что Watch теперь неактивен, тогда избегайте ответного сигнала Haptic.