TransferCurrentComplicationUserInfo и ComplicationController

Я хочу отправить данные в свое усложнение как часть didReceiveRemoteNotification для обновления отображаемых данных, но, похоже, Apple мало документации о том, как установить взаимосвязь между этим и самим усложнением.

Когда создается ComplicationController, должен ли я также создать WCSession и начать прослушивание вызовов делегатов? Мне удалось поместить его в getPlaceholderTemplateForComplication, и это, кажется, работает, когда приложение iOS работает, но нет, когда приложение было убито (или больше не работает).

Мне любопытно, есть ли у кого-нибудь хорошее руководство по получению данных на часы как часть удаленного push-уведомления JSON, когда приложение iOS запущено или нет.


person Callum Jones    schedule 04.10.2015    source источник


Ответы (1)


Я бы рекомендовал посмотреть сеанс WatchConnectivity от WWDC, так как он достаточно подробно описывает сложности обновления. немного ближе к концу.

Таким образом, в приложении iOS, когда у вас есть содержимое для отправки:

    NSDictionary *userInfo = // data to send
    [[WCSession defaultSession] transferComplicationUserInfo:userInfo];
...
- (void)session:(WCSession * __nonnull)session didFinishUserInfoTransfer:(WCSessionUserInfoTransfer *)userInfoTransfer error:(nullable NSError *)error {
    // handle error
    NSLog(@"%s %@ (%@)", __PRETTY_FUNCTION__, userInfoTransfer, error);
}

и на стороне часов:

@property WCSession *session;
...
    _session = [WCSession defaultSession];
    _session.delegate = self;
    [_session activateSession];
...
- (void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *, id> *)userInfo {
   // persist data and trigger reload/extend of complication(s)
}
person ccjensen    schedule 05.10.2015
comment
Как проще всего получить доступ к данным didReceiveUserInfo из ComplicationController? Мой didReceiveUserInfo находится в моем InterfaceController. Итак, didReceiveUserInfo должен идти как в InterfaceController, так и в ComplicationController, или есть какой-то более простой/лучший способ получить доступ к данным из ComplicationController? Я предполагаю, что должно быть, но это то, что я тоже пытаюсь выяснить stackoverflow.com/questions/33190685/ - person SRMR; 18.10.2015
comment
вы с этим чего-нибудь добились? я вообще не могу обновить усложнение - person mad_dog; 16.11.2015