相关疑难解决方法(0)

更新Apple Watch复杂数据的流程是什么?

我一直在互联网上学习很多教程,学习如何设置复杂功能.我按照预期设置并发症没有问题.

直到初始时间表条目到期.12个小时后,我不知道如何更新它以保持并发症的生效.我将分享下面的所有内容,希望有人可以帮我填写.

在这里,我为要在复杂化中显示的数据创建变量.

struct data = {
var name: String
var startString: String
var startDate: NSDate
}
Run Code Online (Sandbox Code Playgroud)

以下数组是此数据的容器.

var dataArray = [data]
Run Code Online (Sandbox Code Playgroud)

这样可以在手表锁定时显示复杂功能.

func getPrivacyBehaviorForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationPrivacyBehavior) -> Void) {
    handler(.ShowOnLockScreen)
}
Run Code Online (Sandbox Code Playgroud)

这允许在复杂化上前进时间旅行.

func getSupportedTimeTravelDirectionsForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTimeTravelDirections) -> Void) {
    handler([.Forward])
}
Run Code Online (Sandbox Code Playgroud)

在这里,我将时间线的开始时间设置为等于现在.

func getTimelineStartDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
    handler(NSDate())
}
Run Code Online (Sandbox Code Playgroud)

在这里,我将时间线的结束时间设置为从现在开始等于12小时.

func getTimelineEndDateForComplication(complication: CLKComplication, withHandler handler: (NSDate?) -> Void) {
    handler(NSDate(timeIntervalSinceNow: (60 * 60 * 12)))
}
Run Code Online (Sandbox Code Playgroud)

在这里,我创建了复杂的模板.这是为用户在浏览手表上的所有复杂情况时看到我的并发症时显示的样本数据.

func getPlaceholderTemplateForComplication(complication: CLKComplication, withHandler …
Run Code Online (Sandbox Code Playgroud)

apple-watch clockkit watchos-2 apple-watch-complication

20
推荐指数
2
解决办法
6369
查看次数

使用Swift 3和后台任务更新复杂性

对于watchOS 3,Apple建议使用WKRefreshBackgroundTask而不是使用更新复杂功能getNextRequestedUpdateDate.

如何使用新方法确定两次更新之间的时间?

我只会破解我的数据请求(从网址)进入getCurrentTimelineEntry并将更新复杂功能,但我认为这不是苹果推荐的.

一个简短的代码示例将是一个很大的帮助.

swift apple-watch-complication swift3 watchos-3 wkrefreshbackgroundtask

8
推荐指数
1
解决办法
3703
查看次数

获取并发数据:不调用ExtensionDelegate

(在过去的几周里,其他人似乎遇到了这个问题,但是我找不到任何解决方案.)

我正在尝试做一个非常基本的事情:从我的iOS应用程序或我的Watch应用程序获取数据到我的复杂控制器.

事实证明,这样做的能力比我想象的要差.watchOS 2 Transition Guide表示我应该使用以下代码"[从[@fetch]扩展委托中获取所需的数据"):

ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];  
NSDictionary* data = [myDelegate.myComplicationData objectForKey:ComplicationCurrentEntry];
Run Code Online (Sandbox Code Playgroud)

大.除此之外,我还没有弄清楚如何让这个在扩展方面工作.虽然更重要的是,我似乎甚至无法从复杂的控制器启动中获得扩展代理代码.当我运行复杂功能时,我收到此消息:"扩展收到请求以唤醒并发症支持." 但是,任何扩展委托方法中的代码都不会运行.我还在每个方法中设置了断点,并且没有一个断点被击中.

它也看起来像"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);  
}
Run Code Online (Sandbox Code Playgroud)

apple-watch clockkit watchos-2 apple-watch-complication

6
推荐指数
1
解决办法
2795
查看次数

保持核心数据与多个手表同步

我正在编写 iPhone 和 Watch 应用程序。我计划支持将多个手表与手机配对的功能。

iPhone 和 Watch 应用程序都将读取和写入核心数据数据存储,我将使用WatchConnectivity它们来保持同步(使用transferUserInfo:)。用户将在一个设备上书写/口述某些内容,然后它会出现在另一台设备上。

我正在努力弄清楚如何支持多个手表。鉴于以下场景:

  • 用户正在使用电话/手表A
    • 在一天中,用户添加了 10 个项目
  • 一天结束,他们切换到 WatchB

WatchB 如何与 Phone/WatchA 同步?

  • WKSession 会自动重放transferUserInfoWatchA 配对时的调用吗?
  • 我是否需要以某种方式跟踪 WatchB 需要的所有内容并自己重播所有内容?
  • 我是否只使用transferFileAPI发送整个 sqlite 数据库(这似乎有点多)?

ios watchkit watchos watchos-2 watchconnectivity

2
推荐指数
1
解决办法
232
查看次数