Apple Watch - как запланировать синхронизацию обновления усложнения с push-уведомлением?

Я пишу приложение для конференции, в котором участники могут проверять расписание переговоров с указанием времени и номера комнаты. Пользователь выбирает разговоры, которые ему интересны. Приложение для часов отображает следующее предстоящее выступление пользователя как осложнение.

В случае задержки выступления или смены комнаты мы отправим push-уведомления всем участникам этого выступления. Приложение также обновляет усложнение через регулярные промежутки времени (каждые 30 минут). Если пользователь выбирает push-уведомление в своем приложении или часах, сложность обновляется.

Есть один вариант использования для этой настройки, который не работает: если push-уведомление получено на телефон или приложение, и пользователь видит изменение времени комнаты при push, но НЕ выбирает push, то сообщение при push будет не синхронно с осложнением.

Например: Усложнение показывает: 1: 15p Rm 1F Осложнение запланировано для обновления с 30-минутным интервалом. Пуш приходит в 13:10 с сообщением «Ваше следующее событие« Глобальное потепление »отложено до 13:45», но пользователь не выбирает его. Осложнение будет продолжаться с 13:15 до 13:30.

Есть ли способ избежать этого?


person CoolDocMan    schedule 23.11.2015    source источник


Ответы (1)


Вы можете реализовать фоновую выборку и принудительно обновить усложнение, таким образом у вас будут следующие схемы:

iOS: внедрите application:didReceiveRemoteNotification:fetchCompletionHandler: в UIApplicationDelegate и получите push-уведомление. После этого перенесите полученные данные с помощью WatchConnectivity для просмотра и принудительно обновите усложнение.

watchOS: Реализуйте didReceiveRemoteNotification: на WKExtensionDelegate и просто принудительно обновите усложнение после успешной выборки.

person Dmytro Hutsuliak    schedule 23.11.2015
comment
На самом деле, насколько я понимаю, в приложении ничего не вызывается, пока пользователь не выберет полученное уведомление. - person CoolDocMan; 23.11.2015
comment
Вы ошибаетесь, все перечисленные выше методы вызываются независимо от действий пользователя, и я уже использовал эту функцию в своих проектах. Просто внимательно прочтите документацию. - person Dmytro Hutsuliak; 23.11.2015
comment
@CoolDocMan на всякий случай оставит здесь соответствующие ссылки: developer.apple.com/library/prerelease/ios/documentation/UIKit/: и - person Dmytro Hutsuliak; 24.11.2015
comment
Я попробую и вернусь к вам. Отправлю вам виртуальное пиво, если оно сработает :-) - person CoolDocMan; 24.11.2015