【发布时间】:2015-08-25 22:05:31
【问题描述】:
(看起来这个问题之前几周其他人也遇到过,但我没有找到任何解决方案。)
我正在尝试做一件非常基本的事情:将数据从我的 iOS 应用或 Watch 应用获取到我的复杂控制器。
事实证明,我做这件事的能力比我想象的要差。 watchOS 2 过渡指南表明我应该使用以下代码“[从扩展委托中获取]所需的数据”:
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSDictionary* data = [myDelegate.myComplicationData objectForKey:ComplicationCurrentEntry];
太好了。除了,我无法弄清楚如何让它在扩展方面工作。尽管更重要的是,我似乎根本无法从复杂控制器启动中运行扩展委托代码。当我运行复杂功能时,我收到以下消息:“扩展收到了唤醒复杂功能支持的请求。”但是,任何扩展委托的方法中的代码似乎都没有运行。我还在每个方法中设置了断点,并且没有一个断点被命中。
看起来“transferCurrentComplicationUserInfo:”也被建议用于并发症更新,但具体如何使用尚不清楚。据我所知,它用于唤醒手表扩展,以便 ExtensionDelegate 可以存储新数据以供下次复杂控制器运行时使用,但由于上一个问题,我无法确认。
我有一个可能的解决方法(从复杂控制器 ping 服务器并希望会话变量持续存在以便我可以发送相关数据),但是如果我不能解决这个问题,我的复杂工作很有可能会被软管。这里的任何帮助都将是巨大的。
顺便说一下,这是我为“getCurrentTimelineEntryForComplication”提供的代码,如果这有帮助的话。
- (void)getCurrentTimelineEntryForComplication:(CLKComplication *)complication withHandler:(void(^)(CLKComplicationTimelineEntry * __nullable))handler {
NSDate* entryDate = [NSDate date];
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSString* data = [myDelegate.complicationData objectForKey:@"meow"];
NSLog(@"complication data: %@", data);
CLKComplicationTimelineEntry* entry = [self getTimelineEntry:@"2015-08-25 00:19:42" entryDate:entryDate complication:complication];
handler(entry);
}
【问题讨论】:
-
您在 WatchKit 扩展的哪个位置激活了 WCSession?您将什么对象设置为其委托?
-
@ccjensen 遇到了同样的问题,你们有没有发现什么问题?
-
我的问题从来没有得到答复,所以我认为这永远不会解决
-
@ccjensen 我遇到了同样的问题stackoverflow.com/questions/35542729/… ...我在
ExtensionDelegate中激活了WCSession,有什么想法吗?
标签: apple-watch watchos-2 apple-watch-complication clockkit