我一直在互联网上学习很多教程,学习如何设置复杂功能.我按照预期设置并发症没有问题.
直到初始时间表条目到期.12个小时后,我不知道如何更新它以保持并发症的生效.我将分享下面的所有内容,希望有人可以帮我填写.
在这里,我为要在复杂化中显示的数据创建变量.
struct data = {
var name: String
var startString: String
var startDate: NSDate
}
以下数组是此数据的容器.
var dataArray = [data]
这样可以在手表锁定时显示复杂功能.
func getPrivacyBehaviorForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationPrivacyBehavior) -> Void) {
    handler(.ShowOnLockScreen)
}
这允许在复杂化上前进时间旅行.
func getSupportedTimeTravelDirectionsForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimeTravelDirections) -> Void) {
    handler([.Forward])
}
在这里,我将时间线的开始时间设置为等于现在.
func getTimelineStartDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
    handler(NSDate())
}
在这里,我将时间线的结束时间设置为从现在开始等于12小时.
func getTimelineEndDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
    handler(NSDate(timeIntervalSinceNow: (60 * 60 * 12)))
}
在这里,我创建了复杂的模板.这是为用户在浏览手表上的所有复杂情况时看到我的并发症时显示的样本数据.
func getPlaceholderTemplateForComplication(complication: CLKComplication, withHandler …对于watchOS 3,Apple建议使用WKRefreshBackgroundTask而不是使用更新复杂功能getNextRequestedUpdateDate.
如何使用新方法确定两次更新之间的时间?
我只会破解我的数据请求(从网址)进入getCurrentTimelineEntry并将更新复杂功能,但我认为这不是苹果推荐的.
一个简短的代码示例将是一个很大的帮助.
swift apple-watch-complication swift3 watchos-3 wkrefreshbackgroundtask
(在过去的几周里,其他人似乎遇到了这个问题,但是我找不到任何解决方案.)
我正在尝试做一个非常基本的事情:从我的iOS应用程序或我的Watch应用程序获取数据到我的复杂控制器.
事实证明,这样做的能力比我想象的要差.watchOS 2 Transition Guide表示我应该使用以下代码"[从[@fetch]扩展委托中获取所需的数据"):
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);  
}
我正在编写 iPhone 和 Watch 应用程序。我计划支持将多个手表与手机配对的功能。
iPhone 和 Watch 应用程序都将读取和写入核心数据数据存储,我将使用WatchConnectivity它们来保持同步(使用transferUserInfo:)。用户将在一个设备上书写/口述某些内容,然后它会出现在另一台设备上。
我正在努力弄清楚如何支持多个手表。鉴于以下场景:
WatchB 如何与 Phone/WatchA 同步?
transferUserInfoWatchA 配对时的调用吗?transferFileAPI发送整个 sqlite 数据库(这似乎有点多)?