swift – 何时在WCSession对象上调用activateSession()
我想知道什么时候会在手表和iOS设备上的WCSession对象上调用activateSession().
在文档中它说: 始终在调用任何与会话相关的方法之前分配代理并激活会话.必须先配置并激活会话,然后才能发送消息或获取有关连接状态的信息. 起初我以为我把我的代码初始化为会话: if (WCSession.isSupported()) { session = WCSession.defaultSession() session.delegate = self session.activateSession() } 在iOS设备上的viewDidLoad和手表端的willActivate中. 它有效…但我不认为这是一个很好的解决方案. 每次打开其中一个应用程序时,是否会导致“重新连接”? 放置该代码的好地方在哪里? 解决方法
当您将WCSession代码放在??viewDidLoad中并且willActivate时,不仅在打开应用程序时调用它,而且每次显示包含代码的视图控制器时.所以这不是一个理想的地方.
放置此代码的最佳位置是应用程序:应用程序的AppDelegate中的didFinishLaunchingWithOptions和手表扩展程序的ExtensionDelegate中的applicationDidFinishLaunching 您可以将所有会话处理放入单个类中,如tutorial by @NatashaTheRobot中所述. 这样,会话仅在应用程序保存在内存中时创建一次. 编辑 正如ccjensen在他的评论中指出的那样,如果您使用连接进行复杂,通知或Glance更新,则必须在ExtensionDelegate的init方法中激活会话.在这些情况下,不会调用applicationDidFinishLaunching. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |