有什么办法可以从 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)
}

10-08 06:25