WCSession и виджет «Сегодня»

У меня есть приложение с сегодняшним расширением и приложение для часов. Из основного приложения WCSession работает нормально, и данные передаются на часы и принимаются правильно, но когда я пытаюсь отправить или получить данные через WCSession в виджете Today, свойства paired и watchAppInstalled сеанса устанавливаются равными false, поэтому вызов transferUserInfo: ничего не делает. и session:didReceiveUserInfo: никогда не вызывается.

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


person Marco Boschi    schedule 25.08.2015    source источник


Ответы (2)


Если приложение для часов работает на переднем плане, вы сможете отправить ему сообщение через уведомление Darwin. Взгляните на MMWormhole.

person Christopher Pickslay    schedule 26.08.2015
comment
Спасибо за предложение, я рассмотрю его. - person Marco Boschi; 26.08.2015
comment
Допустим, у меня открыт виджет «Сегодня» и приложение для часов, но не приложение, если часы отправляют прямое сообщение в приложение с помощью sendMessage: приложение должно быть открыто в фоновом режиме, что позволяет ему получать информацию о пользователе и уведомлять виджет через червоточину. . Может ли это работать? - person Marco Boschi; 26.08.2015
comment
Я бы использовал openParentApplication:reply, чтобы уведомить приложение. Затем вы можете использовать MMWormhole, чтобы уведомить сегодняшнее расширение. - person Christopher Pickslay; 26.08.2015
comment
Поскольку приложение предназначено для watchOS 2, openParentApplication:reply: недоступен, но sendMessage:replyHandler:errorHandler: метод WCSession выполняет ту же работу. У вас есть идеи, как разбудить приложение из центра уведомлений? - person Marco Boschi; 27.08.2015
comment
Невозможно напрямую разбудить приложение из виджета «Сегодня», кроме как запустить его с помощью openURL. - person Christopher Pickslay; 27.08.2015

Кажется, WCsession работает только из приложения iOS, а не из каких-либо расширений iOS (поделиться, сегодня, клавиатура и т. д.), поэтому на данный момент вам придется «ретранслировать» вещи через приложение, если вы хотите передать их на часы. .

Вы должны подать в Apple отчет об ошибке улучшения, объяснив, почему вы считаете, что его можно использовать и из расширений!

person ccjensen    schedule 26.08.2015
comment
Сделано, я опубликую обновление, когда получу ответ - person Marco Boschi; 27.08.2015
comment
Какой номер радара на случай, если заглянут инженеры Apple? - person ccjensen; 27.08.2015
comment
Мне дали номер 22434298 - person Marco Boschi; 27.08.2015
comment
Обновление: мой отчет об ошибке помечен как дубликат #22302522 и будет закрыт. - person Marco Boschi; 02.09.2015