【发布时间】:2018-10-12 05:37:55
【问题描述】:
我在 AppleWatch 和 iPhone 之间通信时遇到问题。
iPhone 与 Watch 的通信工作正常。
观看 iPhone:AppDelegate 中的
didReceiveApplicationContext不会触发!!!
-
我在 (iPhone) AppDelegate 中有这个:
import WatchConnectivity
-
if WCSession.isSupported() {
WCSession.default.delegate = self
WCSession.default.activate()
}
...
extension AppDelegate: WCSessionDelegate {
// MARK: WCSessionDelegate
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
//
}
func sessionDidBecomeInactive(_ session: WCSession) {
//
}
func sessionDidDeactivate(_ session: WCSession) {
//
}
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) {
DispatchQueue.main.async {
print("Phone didReceiveApplicationContext")
}
}
}
在我的手表 InterfaceController 中:
import WatchConnectivity
-
if WCSession.isSupported() {
WCSession.default.delegate = self
WCSession.default.activate()
}
-
extension InterfaceController: WCSessionDelegate {
// MARK: WCSessionDelegate
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
//
}
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String: Any]) {
DispatchQueue.main.async {
print("Watch didReceiveApplicationContext")
}
}
}
-
我正在尝试通过“更新应用上下文”来进行交流,如下所示:
@IBAction func buttonPressed() {
guard WCSession.isSupported() else {
return
}
let message = ["buttonPressed" : true]
do {
try WCSession.default.updateApplicationContext(message)
} catch {
print("Something went wrong")
}
}
-
为什么 AppDelegate 中的 didReceiveApplicationContext 方法没有触发?
-
我发现调试 Watch 应用程序非常复杂,包括必须将调试器附加到 iPhone 应用程序等。也许我的调试方式根本上存在一些问题?
【问题讨论】:
标签: swift apple-watch watchos watchconnectivity watchos-simulator