我正在使用transferFile,我可以成功发送和接收文件,但为了完成转移过程,我需要打开iPhone应用程序。
在观察其他应用时,似乎他们能够在后台接收并处理收到的数据(例如,向用户发送推送通知)。
我想知道他们是怎么做到的。
答案 0 :(得分:0)
您应该使用观看连接请求数据的sendMessage功能从观看应用程序向手机发送消息。这将唤醒iPhone应用程序。然后在手机上的didreceivemessage方法中,您应该使用filetransfer功能将文件发送到手表。
为了阐明何时使用sendMessage发送消息,这会在后台唤醒iphone应用程序以接收可以通过文件传输进行响应的消息。希望这有帮助
在发送文件传输之前,您需要先发送消息。在手表端实施类似的东西
func sendActivationMessage() {
if session.activationState == .activated && session.isReachable {
session.sendMessage(["Watch Message" : "Activate"], replyHandler: {
(reply) in
if reply["Phone Message"] as! String == "Activated" {
//This is where you should implement your file transfer
}
}, errorHandler: { (error) in
print("***** Error Did Occur: \(error) *****")
})
} else {
print("***** Activation Error *****")
}
}
然后在你手机端的didreceivemessage功能实现类似的东西
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
if let messageFromWatch = message["Watch Message"] {
let messageData = messageFromWatch as! String
//Message From Watch to Activate Watch Connectivity Session
if messageData == "Activate" {
replyHandler(["Phone Message" : "Activated"])
}
}