有没有办法在Apple Watch中通知用户iPhone现在已经超出范围并且当它回到范围内时。我们怎样才能在观看扩展中做到这一点。
提前致谢。
答案 0 :(得分:9)
所以在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
}
}
我希望它会对你有所帮助:)。
答案 1 :(得分:6)
使用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。
答案 2 :(得分:1)
从正式的角度来看,Apple没有说明如何处理这个问题。
然而,考虑到操作系统处理的配对和通信区域没有应用程序的参与,似乎几乎可以肯定的是,任何关于手表(以及手机端)连接问题的用户通知都将由Watch OS处理。好。我的猜测是,用户将有机会解决连接丢失问题,或者如果不能,则退出Watch应用程序。从开发人员的角度来看,很可能我们的应用程序无法区分未解决的连接丢失和用户正常退出应用程序,并将相同的通知发送到Watch Extension,但这只是猜测
应该注意的是,手表上没有第三方开发人员代码用于当前的Watch应用程序,只是一个UI,因此即使未解决的连接丢失也不会导致任何数据丢失。如果由于失去与手表的连接而被操作系统退出Watch Extension(在iPhone上运行),它仍然可以进行常规的数据存储和清理。
答案 3 :(得分:0)
从目前的知识点来看,这可能是不可能的。
来自Apple的WatchKit App Architecture
选择场景后,WatchKit会告诉配对的iPhone启动 您的WatchKit扩展并创建管理它所需的对象 现场。完全配置场景后,它将显示在Apple上 看。 WatchKit应用程序和。之间的信息传输 WatchKit扩展在幕后透明地发生。
这意味着,代码在iPhone上执行。如果iPhone无法使用,则无法在手表上运行该应用程序。
答案 4 :(得分:-2)
您可以在WCSession documentation中找到所有连接状态更改通知。