3

我希望将数据发送到我的并发症,作为didReceiveRemoteNotification更新显示数据的一部分,但 Apple 似乎很少有文档说明如何设置这与并发症本身之间的关系。

创建aComplicationController后,我是否也应该创建 aWCSession并开始监听委托调用?我设法将它放入getPlaceholderTemplateForComplication其中,这似乎在 iOS 应用程序运行时有效,但应用程序被终止(或不再运行)时无效。

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

4

1 回答 1

1

我建议观看来自 WWDC 的 WatchConnectivity 会话,因为它涵盖了接近尾声的更新复杂性。

总之,在 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)
}
于 2015-10-05T17:44:14.617 回答