将 transferUserInfo 变成 sendMessage
Turn transferUserInfo into sendMessage
我目前使用 transferUserInfo
.
从 iPhone 将我的数据 传递到手表
我想添加一个额外的功能来向 iPhone 询问来自 Watch[=52 的相同数据(立即因为它可能是第一次打开 Watch) =].
所以我需要sendMessage:replyHandler:errorHandler:
,但我不知道如何使用它。
(我用 transferUserInfo
:)
iPhone TableViewController.swift
:
let applicationDict = ["TC" : newP.tC, "Mat" : newP.mat]
let transfer = WCSession.defaultSession().transferUserInfo(applicationDict)
观看InterfaceController.swift
:
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
if let tC = userInfo["TC"] as? String, let mat = userInfo["Mat"] as? String {
receivedData.append(["TC" : tC , "Mat" : mat])
ExtensionDelegate.evnts.append(Evnt(dataDictionary: ["TC" : tC , "Mat" : mat]))
doTable()
} else {
print("tC and mat are not same as dictionary value")
}
}
(我尝试用 sendMessage
添加的内容:)
iPhone TableViewController.swift
:
let msg = WCSession.defaultSession().sendMessage(applicationDict, replyHandler: nil, errorHandler: nil)
观看InterfaceController.swift
:
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
//handle received message
let value1 = message["TC"] as? String
let value2 = message["Mat"] as? String
//use this to present immediately on the screen
dispatch_async(dispatch_get_main_queue()) {
//self.messageLabel.setText(value)
print("ValWatch1: \(value1)")
print("ValWatch2: \(value2)")
}
//send a reply
replyHandler(["TC":"Yes"])
}
我说不清我搞砸了什么。
您尝试向手表发送消息的代码是正确的
let msg = WCSession.defaultSession().sendMessage(applicationDict, replyHandler: nil, errorHandler: nil)
但是你确定手表已经配对了吗?您可能需要在发送消息之前先添加此检查
if (WCSession.defaultSession().reachable) {
// send message
}
在尝试从父应用发送消息时,还要确保手表应用处于 运行 状态。如果您的手表应用不在前台,则它不会收到从您的 iphone 应用发送的消息。
我目前使用 transferUserInfo
.
我想添加一个额外的功能来向 iPhone 询问来自 Watch[=52 的相同数据(立即因为它可能是第一次打开 Watch) =].
所以我需要sendMessage:replyHandler:errorHandler:
,但我不知道如何使用它。
(我用 transferUserInfo
:)
iPhone TableViewController.swift
:
let applicationDict = ["TC" : newP.tC, "Mat" : newP.mat]
let transfer = WCSession.defaultSession().transferUserInfo(applicationDict)
观看InterfaceController.swift
:
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
if let tC = userInfo["TC"] as? String, let mat = userInfo["Mat"] as? String {
receivedData.append(["TC" : tC , "Mat" : mat])
ExtensionDelegate.evnts.append(Evnt(dataDictionary: ["TC" : tC , "Mat" : mat]))
doTable()
} else {
print("tC and mat are not same as dictionary value")
}
}
(我尝试用 sendMessage
添加的内容:)
iPhone TableViewController.swift
:
let msg = WCSession.defaultSession().sendMessage(applicationDict, replyHandler: nil, errorHandler: nil)
观看InterfaceController.swift
:
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
//handle received message
let value1 = message["TC"] as? String
let value2 = message["Mat"] as? String
//use this to present immediately on the screen
dispatch_async(dispatch_get_main_queue()) {
//self.messageLabel.setText(value)
print("ValWatch1: \(value1)")
print("ValWatch2: \(value2)")
}
//send a reply
replyHandler(["TC":"Yes"])
}
我说不清我搞砸了什么。
您尝试向手表发送消息的代码是正确的
let msg = WCSession.defaultSession().sendMessage(applicationDict, replyHandler: nil, errorHandler: nil)
但是你确定手表已经配对了吗?您可能需要在发送消息之前先添加此检查
if (WCSession.defaultSession().reachable) {
// send message
}
在尝试从父应用发送消息时,还要确保手表应用处于 运行 状态。如果您的手表应用不在前台,则它不会收到从您的 iphone 应用发送的消息。