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

Posted

技术标签:

【中文标题】尝试在屏幕关闭时让 Apple Watch 计时器应用程序在后台运行【英文标题】:Trying to get Apple Watch timer app to run in background while the screen is off 【发布时间】:2016-03-05 19:17:43 【问题描述】:

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

现在发送振动我正在使用这个:

WKInterfaceDevice.currentDevice().playHaptic(.Stop)

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

【问题讨论】:

【参考方案1】:

要在屏幕关闭后保持 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 扩展目标中启用 Background Modes。选择最适合您正在创建的应用程序类型的Session Types 之一。

【讨论】:

【参考方案2】:

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

正如您想象的那样,这是由于一种节电措施,当手表进入睡眠状态时会暂停您的手表应用。

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

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

【讨论】:

真不幸。好吧,非常感谢我的回复。我想我会尝试使用计时器在 iphone 上工作并将通知发送到手表。谢谢

以上是关于尝试在屏幕关闭时让 Apple Watch 计时器应用程序在后台运行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Apple Watch(iOS)上创建秒表(计时器)[关闭]

有没有办法在 Apple Watch 屏幕关闭时记录动作?

防止 Apple Watch 关闭屏幕

如何在 Apple Watch 模拟器中滚动 [关闭]

如何在模拟器上更改 Apple Watch 系统的文本大小?

applewatch紧握无反应