有什么方法可以在 Apple Watch 中通知用户 iPhone 现在超出范围以及何时返回范围。我们如何在手表扩展中做到这一点。
提前致谢。
所以在 WatchOS 2 上这是可能的!
你必须在 iPhone 端做:
第一的 :
import WatchConnectivity
然后 :
if WCSession.isSupported() { // check if the device support to handle an Apple Watch
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession() // activate the session
if session.paired { // Check if the iPhone is paired with the Apple Watch
// Do stuff
}
}
我希望它会帮助你:)
使用 watchOS 2.0,您可以。为此,如果您希望 Apple Watch 收到通知,请将这些添加到 ExtensionDelegate:
func watchKitSetup() {
if (WCSession.isSupported()) {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
// In your WatchKit extension, the value of this property is true when the paired iPhone is reachable via Bluetooth.
// On iOS, the value is true when the paired Apple Watch is reachable via Bluetooth and the associated Watch app is running in the foreground.
// In all other cases, the value is false.
if session.reachable {
}
}
}
func applicationDidFinishLaunching () {
self.watchKitSetup()
}
// Called when session.reachable value changes, such as when a user wearing an Apple Watch gets out of range of their iPhone.
func sessionReachabilityDidChange(session: WCSession) {
if session.reachable {
}
}
您还应该将 WCSessionDelegate 添加到您的 ExtensionDelegate。
从正式的角度来看,苹果没有给出任何处理方式的迹象。
然而,鉴于操作系统在没有应用程序参与的情况下处理配对和通信区域,几乎可以肯定的是,任何有关手表(和手机端)连接问题的通知也将由 Watch OS 处理。我的猜测是,用户将有机会解决连接丢失的问题,或者如果他们不能退出 Watch 应用程序。从开发人员的角度来看,我们的应用程序很可能无法区分未解决的连接丢失和用户正常退出应用程序,同时向任一应用程序发送相同的通知,但这只是一个猜测.
需要注意的是,当前手表应用程序没有在手表上运行第三方开发者代码,只是一个 UI,因此即使未解决的连接丢失也不会导致任何数据丢失。如果手表扩展程序(在 iPhone 上运行)由于失去与手表的连接而被操作系统退出,它仍然能够进行通常的数据存储和清理。
从目前的知识来看,这可能是不可能的。
来自 Apple 的WatchKit 应用架构
选择场景后,WatchKit 会告诉配对的 iPhone 启动 WatchKit 扩展并创建管理该场景所需的对象。当场景完全配置后,它会显示在 Apple Watch 上。WatchKit 应用程序和 WatchKit 扩展之间的信息传输在幕后透明地进行。
这意味着,代码在 iPhone 上执行。如果 iPhone 无法触及,则无法在手表上运行该应用程序。
您可以在WCSession 文档中找到所有连接状态更改通知。