ios - 在模拟器上运行时,WatchConnectivity 未在 iOS 端激活

标签 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/

最佳答案

更改了我的 ScoreViewController 的 session 定义:

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

对此:

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

关于ios - 在模拟器上运行时,WatchConnectivity 未在 iOS 端激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003821/

相关文章:

ios - 无法正确转换 JSON 字典中的值

php - 使用 native session 时在 php 下制作 "remember me"的最佳方法是什么?

ruby - 浏览器之间共享的 Sinatra Session 数据

ios - 不支持armv7的iOS 5设备

ios - UILocalNotification - 将 1 添加到当前图标角标(Badge)

ios - 带有项目文件的 xCode 项目模板

objective-c - 是否有命令行界面可以列出Mac上范围内的所有蓝牙设备?

ios - 如何根据百分比制作圆圈?

Android:登录网站并使用 DefaultHttpClient 保留 session /cookie

ios - 谷歌移动广告统一在 iOS 启动时崩溃应用程序