我想知道在什么时候人们会在手表和 iOS 设备上的 WCSession 对象上调用 activateSession() 。
在文档中它说:
在调用任何与会话相关的方法之前,始终分配委托并激活会话。在发送消息或获取有关连接状态的信息之前,必须配置并激活会话。
起初我想我输入代码来初始化会话:
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
in viewDidLoad在 iOS 设备上和将激活在手表方面。
有用...但我认为这不是一个好的解决方案。
我对应用程序生命周期还不太熟悉,但据我了解,每次打开应用程序时都会调用这些生命周期。
每次打开其中一个应用程序时,这是否会导致“重新连接”?
哪里是放置该代码的好地方?
当你把WCSession
代码在viewDidLoad
and willActivate
它不仅在应用程序打开时调用,而且每次显示包含代码的视图控制器时调用。所以那不是一个理想的地方。
放置此代码的最佳位置是application:didFinishLaunchingWithOptions
在你的应用程序中AppDelegate
and in applicationDidFinishLaunching
在您的手表扩展程序中ExtensionDelegate
您可以将所有会话处理放入一个单例类中,如这个伟大的建议tutorial http://natashatherobot.com/watchconnectivity-application-context/ by @娜塔莎TheRobot https://twitter.com/natashatherobot.
这样,当应用程序保存在内存中时,会话仅创建一次。
EDIT
As ccjensen https://stackoverflow.com/users/386521/ccjensen在他的评论中指出,如果您使用该连接进行并发症, 通知 or Glance更新你必须激活 ExtensionDelegate 中的会话init
方法。applicationDidFinishLaunching
在这些情况下不会被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)