我试图在Simulator上运行我的项目,但iOS端未激活,只有Watch端设法激活。

这是我的ScoresInterfaceController.swift(观看端)

import WatchConnectivity

class ScoresInterfaceController: WKInterfaceController, WCSessionDelegate {

    // Used to send information to the iOS app
    var applicationDict = [String: Int]()

    // Starts a session to communicate with the iOS app
    var session: WCSession!

    // For WCSession
    override init() {
        super.init()

        if(WCSession.isSupported()) {
            session = WCSession.default()
            session.delegate = self
            session.activate()
        }
    }

    func session(_ session: WCSession,
             activationDidCompleteWith activationState: WCSessionActivationState,
             error: Error?) {}


这是我的ScoreViewController.swift(iOS端)

import WatchConnectivity

class ScoreViewController: UIViewController, WCSessionDelegate {

    // Starts a session to communicate with the Watch app
    var session: WCSession!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        if(WCSession.isSupported()) {
            session = WCSession.default()
            session.delegate = self
            session.activate()    //Not activating when run on Simulator
        }
    }

    // For WCSession

    /** Called when the session has completed activation. If session state is WCSessionActivationStateNotActivated there will be an error with more details. */
    @available(iOS 9.3, *)
    func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {}

    // Receives data from Watch app
    @nonobjc func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {}

    func sessionDidBecomeInactive(_ session: WCSession) {}

    func sessionDidDeactivate(_ session: WCSession) {
        WCSession.default().activate()
    }
}


这是错误消息:

ios - 在Simulator上运行时,无法在iOS端激活WatchConnectivity-LMLPHP

我按照本教程进行操作,但无法弄清问题所在:

http://kristina.io/watchos-2-how-to-communicate-between-devices-using-watch-connectivity/

最佳答案

从以下更改了我的ScoreViewController的会话定义:

@nonobjc func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {}


对此:

func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any])

08-15 20:08