WCSession 激活失败

Lia*_*amM 5 iphone watchkit ios9

当我拨打电话时,我遇到了 WatchKit 连接会话无法激活的问题session.activateSession()。这是我用来设置会话的代码。

\n
if (WCSession.isSupported()) {\n    session = WCSession.defaultSession()\n    session.delegate = self // conforms to WCSessionDelegate\n    session.activateSession()\n    print("Session has been activated")\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是,我在打印行上放置了一个断点,当我检查会话对象时,它说该sessionActivated属性仍然为 false,即使在调用之后也是如此activateSession. 当我调用激活会话时,我似乎没有遇到任何类型的错误,所以我认为它应该有效,但情况似乎并非如此。

\n

此外,如果我尝试使用sendMessage会话对象上的方法,如下所示 -

\n
let message = ["request": "fireLocalNotification"]\nsession.sendMessage(\n    message, replyHandler: { (replyMessage) -> Void in }) { (error) -> Void in\n        print(error.localizedDescription)\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

我收到错误代码

\n
\n

无法完成操作\xe2\x80\x99。(WCErrorDomain 错误 7004。)

\n
\n

我查了一下,意思是“WCErrorCodeSessionNotActivated”。activateSession这是我认为该方法未正确调用的另一个原因。我什至尝试过运行activateSession在发送消息之前直接运行该方法,但仍然收到错误。如果有人能帮忙解释一下发生了什么,那就太好了,谢谢!:)

\n

Shi*_*ama 0

您是否使用大数值?

NSDictionary *userInfo = @{
                           @"a1":@(1000000000),   // 1000000000
                           @"a2":@(10000000000),  // 1e+10
                           @"a3":@(100000000000), // crash!
                           };
[[WCSession defaultSession] transferUserInfo:userInfo];
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,键“a3”的值是危险的,它会导致Apple Watch崩溃。

发送列表后,它会保留在 Apple Watch 中,直到重新安装手表应用程序为止。

(此崩溃发生在设备上,而不是模拟器上)