AppleWatch和iPhone之间的通讯出现问题。
iPhone to Watch通讯正常。
观看iPhone:AppDelegate中的True https://www.google.com/
True http://www.google.com/
True http://www.google.com/
True http://google.com/
False
不会触发!!!
-
我在(iPhone)AppDelegate中拥有这个:
didReceiveApplicationContext
-
import WatchConnectivity
...
if WCSession.isSupported() {
WCSession.default.delegate = self
WCSession.default.activate()
}
在手表InterfaceController中,我有:
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")
}
}
}
-
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中启动?
-
我发现调试Watch应用程序非常复杂,包括必须将调试器附加到iPhone应用程序等。...也许我的调试方式根本存在根本错误?
答案 0 :(得分:1)
当我终于找到解决方案时(经过大量的反复试验和搜索之后),可以将其作为重复项关闭。
我不确定WCSession.default.updateApplicationContext
的问题是什么,但是下面的SO帖子解释了您可以使用sendMessage
,尽管您必须注意replyHandler
。
如果您使用sendMessage:replyHandler:errorHandler:
从手表发送消息,则只有相应的委托方法(session:message:replyHandler:
)会在手机上的AppDelegate中触发。而且,您必须致电replyHandler
!!!
WCErrorCodeDeliveryFailed: Payload could not be delivered
因此,我将updateApplicationContext
用于“电话”>“手表”,并将sendMessage:replyHandler:errorHandler:
用于“手表”>“电话”