在viewDidLoad中激活WCSession - 这会引入哪些错误?

时间:2015-08-14 14:03:17

标签: ios watchkit

在WWDC的简介Watch Connectivity 会话中,建议您不要在viewDidLoad方法中激活WCSession实例,以防您的应用在后台加载。所以不建议如下:

override func viewDidLoad() {
    super.viewDidLoad()
    if(WCSession.isSupported()){
        watchSession = WCSession.defaultSession()
        watchSession!.delegate = self
        watchSession!.activateSession()
    }
}

有人可以详细说明这可能导致的问题吗?

如果你有后台代码,或者应用程序可以从后台重新启动,你的应用程序是否会对来自会话的消息作出反应的问题,会话可能在后台关闭了,并且可以在不进一步调用viewDidLoad的情况下显示视图?

1 个答案:

答案 0 :(得分:1)

老问题,但万一有人想知道原因:因为如果你的应用程序在启动Watch应用程序时没有运行,你的应用程序将在iOS设备的后台启动。当在后台启动时,您的应用程序没有启动其UI。所以没有viewDidLoads会启动,你的iOS应用程序将永远不会激活它的WCSession,这意味着除非iOS应用程序已经运行,否则Watch应用程序永远无法与您的iOS设备通信。