ios 未安装WC WCSession对应应用程序

1u4esq0p  于 2022-12-20  发布在  iOS
关注(0)|答案(3)|浏览(242)

在iOS和iWatch设备之间建立连接时,xCode写入[WC] WCSession对应应用程序未安装。
经过大量的研究,我找到了一个解决办法,也许它会对某人有帮助。

- Check your WatchKit Extention target. 
- Uncheck "Supports Running Without iOS App Installation"
- First run iwatch simulator, than run ios simulator with checkmark
agxfikkp

agxfikkp1#

我已经花了大约3-4小时来解决这个问题,似乎不知何故,我的Apple watch.app从我的目标〉框架中丢失,所以在单击加号图标并将其添加回来后,它不再报告“WC WCSession对应的应用程序未安装”

nwlqm0z1

nwlqm0z12#

它只对我起作用安装手表应用程序从手表设置应用程序。
如果我从Xcode安装Watch应用程序,iOS应用程序会给予我附带的错误信息。

3zwjbxry

3zwjbxry3#

最后,我做到了。对于其他人,谁有这个问题:
1.在iOS中目标:确保在常规〉框架、库和嵌入式内容〉添加YourWatchApp.app,如果它不在列表中。(对于循环问题,请执行下一步)
1.监视目标:转到BuildPhases〉Copy Bundle Resources〉并YouriOSApp.app从列表中删除www.example.com(如果存在)。
1.您必须设置委托并从WatchApp和iOSApp激活它,如下所示:

self.session = session
 self.session.delegate = self
 self.session.activate()

1.如果你使用的是一个帮助类,你的类也应该实现NSObject:

class ConnectivityHelper: NSObject, WCSessionDelegate {

1.确保调用activate方法和发送消息之间有几秒钟的时间。
1.如果您在从Watch发送消息时使用回复处理程序,则必须在具有replyHandler的iOS应用程序中实现didReceiveMessage方法,否则手表上的replyHandler将返回错误,iOS应用程序将不会接收消息。
1.检查出这个完整的代码是工作:iOS部件:

import WatchConnectivity

class PhoneConnectivity: NSObject {

  override init() {
     super.init()
     let session = WCSession.default
     session.delegate = self
     session.activate()
   }

}

extension PhoneConnectivity: WCSessionDelegate {
  //MARK: Delegate Methodes
  func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
  }

  func sessionDidBecomeInactive(_ session: WCSession) {
  }

  func sessionDidDeactivate(_ session: WCSession) {
  }

  // Receiver
  func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
     //with reply handler
  }

  func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
     //with reply handler
  }
  // end Receiver

}

1.首先发送带有测试字符串的消息,如:

WCSession.default.sendMessage(["TEST", "TEST2"], replyHandler: { dictionary in
     print(">WC> reply recieved: \(dictionary.first!.value)")
 }, errorHandler: { error in
     print(">WC> Error on sending Msg: \(error.localizedDescription)")
 })

1.大多数开发人员建议尽快激活会话(在iOS中,使用iOSApp的appDelegate中的didFinishLaunchingWithOptions和WatchApp的WKExtensionDelegate中的应用程序DidFinishLaunching)

相关问题