如何在iOS中在后台接收watchOS文件传输

时间:2017-08-14 16:31:00

标签: ios swift watchkit apple-watch

我正在使用transferFile,我可以成功发送和接收文件,但为了完成转移过程,我需要打开iPhone应用程序。

在观察其他应用时,似乎他们能够在后台接收并处理收到的数据(例如,向用户发送推送通知)。

我想知道他们是怎么做到的。

1 个答案:

答案 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"])
        }
}