尝试让Apple Watch计时器应用程序在屏幕关闭时在后台运行

时间:2016-03-05 19:17:44

标签: ios swift watchkit apple-watch

我正在尝试为手表构建一个定时应用程序,每分钟振动一次,这是用户跟踪时间的一种方式。我让计时器正常工作和振动,但一旦手表上的屏幕熄灭,它就不再振动了。一旦我将屏幕唤醒,它就会恢复正常。

现在发送振动我正在使用它:

WKInterfaceDevice.currentDevice().playHaptic(.Stop)

我知道这可能是某种设计实现以节省电池寿命,但显然我的应用程序的目的是即使在屏幕关闭时也能保持时间跟踪。这样的事情可能吗?

2 个答案:

答案 0 :(得分:5)

要在屏幕关闭后保持watchOS应用运行,现在可以使用watchOS 6中提供的新WKExtendedRuntimeSession命令。

在WatchKit Extension ExtensionDelegate文件中,使用以下命令创建扩展的运行时会话。

let session = WKExtendedRuntimeSession()

在此委托文件中创建一个applicationDidBecomeActive()函数,当您的应用程序处于活动状态时watchOS将调用该函数。在此函数内部,使用以下命令启动ExtendedRuntime会话。

session.delegate = self   // self as session handler
session.start()  // start WKExtendedRuntimeSession

当应用程序处于活动状态时,必须启动扩展的运行时会话。

请注意,您还需要在WatchKit Extension目标中启用Background Modes。选择最适合您所创建的应用程序类型的Session Types之一。

答案 1 :(得分:2)

不,它是not currently possible to provide haptic feedback while the screen is off,因为当手表没有醒来时你的代码没有运行。

正如您想象的那样,这是因为节省电量的措施可以在手表进入睡眠状态时暂停您的手表应用程序。

有关更多信息,Apple开发者论坛有一个关于NSTimer in background的长观察2线程。

对于watchOS 2,一种解决方案是使用手机上的配对应用程序来处理后台计时器并使用本地通知。手机锁定后,通知会发送到您的手表。您还可以使用Watch Connectivity在计时器清醒时更新计时器详细信息。