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

时间:2017-07-10 04:33:12

标签: ios swift session watchconnectivity

我正在尝试在模拟器上运行我的项目,但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()
    }
}

以下是错误消息:

enter image description here

我遵循了本教程,但我无法弄清楚问题是什么:

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

1 个答案:

答案 0 :(得分:0)

更改了我的ScoreViewController的会话定义:

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

到此:

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