title: WCSession has not been activated
body: <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>