swift – 何时在WCSession对象上调用activateSession()

swift – 何时在WCSession对象上调用activateSession(),第1张

概述我想知道什么时候会在手表和iOS设备上的WCSession对象调用activateSession(). 在文档中它说: 始终在调用任何与会话相关的方法之前分配代理并激活会话.必须先配置并激活会话,然后才能发送消息或获取有关连接状态的信息. 起初我以为我把我的代码初始化为会话: if (WCSession.isSupported()) { session = WCSession.d 我想知道什么时候会在手表和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.

总结

以上是内存溢出为你收集整理的swift – 何时在WCSession对象上调用activateSession()全部内容,希望文章能够帮你解决swift – 何时在WCSession对象上调用activateSession()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1010438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存