WCSession has not been activated
<p>I get the WCSession has not been activated error when I try to sent something. And I don't know what I'm doing wrong. I have tested serval pre-made solutions what "must" work. But it doesn't work at my simulator and physical devices.</p>

<p>Some code:</p>

<p>My app delegate:</p>

<pre><code>import UIKit
import CoreData
import WatchConnectivity


@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, WCSessionDelegate {

    var window: UIWindow?


    func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : String]) -&gt; Void) {
        replyHandler(["message": "Hello Watch!"])
    }

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

    func sessionDidBecomeInactive(_ session: WCSession) {

    }

    func sessionDidDeactivate(_ session: WCSession) {

    }

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -&gt; Bool {
        // Override point for customization after application launch.

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

        return true
    }

........


}
</code></pre>

<p>My interfaceController:</p>

<pre><code>import WatchKit
import Foundation
import WatchConnectivity


class InterfaceController: WKInterfaceController {


    override func awake(withContext context: Any?) {
        super.awake(withContext: context)

        // Configure interface objects here.
    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()

        if WCSession.default().isReachable {
            let messageDict = ["message": "hello iPhone!"]

            WCSession.default().sendMessage(messageDict, replyHandler: { (replyDict) -&gt; Void in
                //print(replyDict)
            }, errorHandler: { (error) -&gt; Void in
               // print(error)
            })
        }

    }

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

    func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {

    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }
}
</code></pre>

<p>The extensionDelegate:</p>

<pre><code>   import WatchKit
    import WatchConnectivity

        class ExtensionDelegate: NSObject, WKExtensionDelegate, WCSessionDelegate {

        func applicationDidFinishLaunching() {
            // Perform any final initialization of your application.
            if WCSession.isSupported() {
                let session = WCSession.default()
                session.delegate = self
                session.activate()
            }
        }

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

        func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {

            }
    ....
</code></pre>

<p>Is there any wrong code or implementations? Because nothing works for me.</p>