Когда sessionReachabilityDidChange (_ :) вызывается для WCSessionDelegate наблюдения? - PullRequest
0 голосов
/ 18 апреля 2020

В документации Apple говорится об этом в разделе для обсуждения метода description :

Этот метод вызывается, чтобы позволить текущему процессу узнать, что достижимость его сеанса-партнера изменилась.

Описание свойства isReachable говорит об этом: расширение WatchKit. Устройство iOS находится в пределах досягаемости, поэтому связь может происходить, и расширение WatchKit работает на переднем плане или работает с высоким приоритетом в фоновом режиме (например, во время тренировки или когда сложность загружает свою начальную временную шкалу). data).

Я предполагаю, что это будет означать, что если часы переместятся за пределы диапазона iOS или устройства, то расширение WatchKit будет запущено, а метод WCSessionDelegate sessionReachabilityDidChange() будет вызвано, и isReachable WCSession будет истинным, если устройство iOS только что вошло в диапазон, и ложным, если оно находится просто вне диапазона.

Я не нашел способа проверить это в xcode. Например, я поместил сообщение журнала в sessionReachabilityDidChange(_:) и вышел за пределы диапазона, но xcode просто сообщает, что приложение потеряло соединение с iphone и больше не может его отлаживать. Может кто-нибудь проверить это или указать мне документацию, которая лучше описывает это?

1 Ответ

1 голос
/ 18 апреля 2020

Я думаю, вы не можете проверить это в Xcode.
У меня есть приложение на iOS и watchOS. Чтобы проверить ситуацию такого рода, я могу включить отладочные оповещения на iOS и watchOS. Когда срабатывает func sessionReachabilityDidChange(session: WCSession), я отображаю сообщение об отладке.
Теперь, если я запустил (не в Xcode) расширение своих часов, а затем выключил парное iPhone, предупреждение отладки отобразится на часах.
Это показывает, что sessionReachabilityDidChange фактически вызывается, как и ожидалось.
По-видимому, в Xcode подключенное устройство iOS всегда доступно.

РЕДАКТИРОВАТЬ:

Чтобы проверить ситуацию, когда расширение часов находится не на переднем плане, я сделал следующее:

Вместо того, чтобы показывать предупреждение об отладке, я теперь установил усложнение на уникальное значение, которое иначе невозможно. Я запустил расширение часов и перевел его в фоновый режим, показав циферблат с усложнением.
Когда я теперь выключаю iPhone, усложнение не обновлено.
Это указывает на мне, что sessionReachabilityDidChange не вызывается в фоновом режиме.

...