有什么办法可以从 Watchkit 扩展中调用 iPhone 类中定义的方法吗?
根据我的理解,目前在 Watch kit 和 iPhone 之间进行本地通信的一种方法是使用 NSUserDefaults
,但还有其他方法吗?
一个简单的例子会很棒。
最佳答案
对于 WatchOS2,不推荐使用 openParentApplication
。它的替代品是 Watch Connectivity Framework 中的 WCSession
首先,使用以下代码在 watch( WCSession
) 和 iOS( ExtensionDelegate
) 中初始化 AppDelegate
if WCSession.isSupported() {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
使用
session.sendMessage(msg, replyHandler: { (responses) -> Void in
print(responses)
}) { (err) -> Void in
print(err)
}
使用
AppDelegate
处理消息func session(_ session: WCSession,
didReceiveMessage message: [String : AnyObject],
replyHandler replyHandler: ([String : AnyObject]) -> Void)
{
//do something according to the message dictionary
responseMessage = ["key" : "value"] //values for the replyHandler
replyHandler(responseMessage)
}