Apple Watch Kit在启动时加载数据

时间:2017-11-09 12:51:23

标签: ios watchkit apple-watch

如何在Apple Watch上快速加载数据? UserDefaults自watchOS 2起无效,所以我们只能使用WCSessionDelegate,对吗?

现在,在Watch App上,我打电话给wcSession?.sendMessage(someThing, replyHandler: someFunc, errorHandler: otherFunc),然后在iPhone应用程序上我发回一些数据

 func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void)

最后在func session(_ session: WCSession, didReceiveMessage message: [String : Any])的观看应用中收到它,但这需要3秒钟。

在启动时获取数据的更好方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用回复处理程序功能,而不是启动新邮件。它应该更快。

从观看电话:

func sendRequest() {
    if session.activationState == .activated && session.isReachable {
        session.sendMessage(["Watch Message" : "Request"], replyHandler: { (reply) in

            // Handle reply here

        }, errorHandler: { (error) in

            print("***** Error Did Occur: \(error) *****")
        })
    }
}

处理并回复电话:

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 == "Request" {
            replyHandler(["Response" : data])
        }
    }
}