如何从Apple Watch调用iPhone上定义的方法

Rav*_*dal 7 objective-c ios swift apple-watch watchkit

有没有办法从Watchkit扩展中调用iPhone上的类中定义的方法?

根据我的理解,目前在Watch kit和iPhone之间进行本地通信的方法之一是使用NSUserDefaults,但还有其他方法吗?

一个简单的例子就是很棒.

Kep*_*pPM 5

您可以将类添加到两个目标(主iOS应用程序和WatchKit扩展)并直接使用WatchKit Extention中的方法.

不包括目标

方便地添加具有很少依赖性的类(优选实用程序或类别).如果文件已添加到项目中,则可以将其删除(删除引用)并再次添加,包括多个目标.

例如,我的类别NSString +颜色项目在iOS应用程序和Watch App中正常工作.

更新:您也可以在右侧面板(实用程序)中执行此操作.请参阅下面的链接:cs621620.vk.me/v621620973/13f86/9XYDH1HL5BI.jpg


joh*_*nvc 2

对于 WatchOS2openParentApplication已弃用。它的替代品在Watch Connectivity FrameworkWCSession

首先,使用以下代码WCSession在 watch( ExtensionDelegate) 和 iOS( ) 中进行初始化AppDelegate

if WCSession.isSupported() {
  let session = WCSession.defaultSession()
  session.delegate = self
  session.activateSession()
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令从手表向手机发送通知

session.sendMessage(msg, replyHandler: { (responses) -> Void in
  print(responses)
 }) { (err) -> Void in
 print(err)
}
Run Code Online (Sandbox Code Playgroud)

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)
}
Run Code Online (Sandbox Code Playgroud)