transferCurrentComplicationUserInfo和ComplicationController

时间:2015-10-04 05:31:33

标签: ios swift watchkit watch-os-2 clockkit

我希望将数据发送到我的并发症作为didReceiveRemoteNotification的一部分来更新所显示的数据,但Apple似乎很少提供关于如何设置此与并发症本身之间关系的文档

创建ComplicationController时,我是否应该创建WCSession并开始侦听委托调用?我设法将其放入getPlaceholderTemplateForComplication,这似乎在iOS应用程序运行时起作用,但当应用程序被杀死(或不再运行)时

我很好奇是否有人有一个很好的指南,可以在iOS应用运行时运行时将数据作为远程JSON推送通知的一部分来获取。

1 个答案:

答案 0 :(得分:1)

我建议观看WatchConnectivity session from 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)
}