我想知道在什么时候可以在手表上和activateSession设备上调用WCSession对象上的WCSession()。
文件中说:
在调用任何与会话相关的方法之前,始终分配委托并激活会话。在发送消息或获取有关连接状态的信息之前,必须对会话进行配置和激活。
一开始我想把我的代码用于初始化会话:
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}在viewDidLoad在iOS设备上,在willActivate在手表侧。
起作用了..。但我不认为这是个好办法。我还不太熟悉应用程序的生命周期,但据我所知,每次打开应用程序时,都会调用这些程序。
这会导致每次打开一个应用程序时出现“重新连接”吗?
哪里是放置代码的好地方?
发布于 2015-10-16 11:58:58
当您将WCSession代码放入viewDidLoad和willActivate中时,不仅会在打开应用程序时调用,而且每次都会显示包含该代码的视图控制器。所以那不是个理想的地方。
将这段代码放在应用程序的AppDelegate中的AppDelegate和手表扩展的ExtensionDelegate中的applicationDidFinishLaunching中是最好的地方
您可以将所有会话处理都放在一个单例类中,正如这个伟大的教程中@NatashaTheRobot所建议的那样。
这样,会话只在应用程序被保存在内存中的时间内创建一次。
编辑
正如克詹森在他的评论中指出的那样,如果您使用连接进行克詹森或Glance更新,则必须在ExtensionDelegate的init方法中激活会话。在这种情况下不会调用applicationDidFinishLaunching。
https://stackoverflow.com/questions/33168416
复制相似问题