Прежде чем определить, что расширение никогда не вызывается, вы должны проверить сообщения журнала Watch (консоль) через панель Devices. Возможно, что расширение запускается в фоновом режиме и не прикреплено к отладчику, поэтому вы не увидите сообщение NSLog
в консоли Xcode.
Что еще более важно, вы могли перенести какое-то осложнение userInfo
с телефона на часы, но, похоже, ничего не делаете с этим словарем после того, как часы его получили. Вам нужно сделать больше, чем просто передать текущую информацию о сложности. Источнику данных сложности потребуется доступ к этой информации при вызове getCurrentTimelineEntryForComplication
(в результате перезагрузки шкалы времени).
Возможные причины
У вас не так уж много кода, поэтому я рассмотрел как transferCurrentComplicationUserInfo actually works
и упомянул несвязанную проблему, с которой я столкнулся ваш код.
Без дополнительного кода сложно дать конкретный ответ, но я постараюсь помочь ради всех, у кого может возникнуть эта проблема в будущем.
Вот несколько возможных причин, по которым didReceiveUserInfo
вашего расширения не вызывается.
- Вы активировали
WCSession
более чем в одном месте, и передача (не) обрабатывается другим делегатом.
- У вас не было ссылки на активированный сеанс, и он вышел за рамки.
- Приложение не было открыто на часах.
- Сеанс активирован недостаточно быстро или в нужном месте.
transferCurrentComplicationUserInfo
не удалось из-за ошибки, потому что ваш телефон был заблокирован. (Это известная проблема, признанная Apple , и есть обходной путь.)
Как код поможет улучшить ваш вопрос и наши ответы
Целью предоставления кода является выявление или устранение причин, по которым что-то не работает. Код обычно необходим, чтобы помочь ответить "Почему это не работает?" вопросы программирования.
Просто потому, что это работает в симуляторе, это не гарантирует, что вы «все настроите правильно». Разумно, что тестирование на устройстве выявляет ошибки, которые вы никогда не обнаружите при тестировании в симуляторе.
person
Community
schedule
03.03.2016
session.transferCurrentComplicationUserInfo(applicationDict)
, а затем для получения в делегате расширения на часах у меня естьfunc session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) { NSLog("Complication Update didReceiveUserInfo ExtensionDelegate") NSLog("UserInfo recieved from iPhone\n%@", userInfo.description) complicationServer.reloadTimelineForComplication(complication) }
Однако он никогда не вызывается - person Simon   schedule 03.03.2016