何时对 WCSession 对象调用 activateSession()

2024-02-16

我想知道在什么时候人们会在手表和 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(使用前将#替换为@)

何时对 WCSession 对象调用 activateSession() 的相关文章

  • 在 Swift 中执行 POST 请求

    我正在尝试做这样的事情 NSMutableURLRequest request NSMutableURLRequest requestWithURL NSURL URLWithString http google com request H
  • 在 Firebase-ios-swift 中创建和附加数组

    如何在firebase 3 0中创建数组并在数组中执行append和delete功能 这是我正在寻找的数据结构 1 UserIds 0 12345 1 678910 2 1112131415 2 UserProfile 0 12345 0
  • 未找到 Firebase 框架

    我一直在尝试将我的项目迁移到 cocoapods 我觉得我快到了 但我陷入了困境 ld 找不到架构 x86 64 的 Firebase 框架 错误 链接器命令失败 退出代码为 1 使用 v 查看调用 我正在尝试使用我的 app xcwork
  • SwiftUI 预览的 Xcode Canvas 不显示

    我正在尝试从 Xcode 11 运行新的 Canvas 功能 但 Canvas 不会显示 我究竟做错了什么 这个新的 Xcode 功能应该在不运行应用程序的情况下显示我的 SwiftUI 视图的实时预览 当您使用 SwiftUI 创建自定义
  • Swift 中 EXCEL 的 RATE 函数提供不同的结果

    func RATE nper Double pmt Double pv Double fv Double type Double guess Double gt Double var rate guess var y Double 0 va
  • 如何从 UIView 中仅删除用户添加的子视图

    我试图删除添加到视图中的所有子视图 因此我实现了一个循环来使用以下内容迭代子视图 for subview in view subviews println subview subview removeFromSuperview 我通过向我的
  • 如何在 Xcode 8.0 中安装 Alamofire 4.0

    我正在使用更新的 Xcode 8 0 如何使用 cocoa pod 安装 alamofire 4 0 我试过这个https github com Alamofire Alamofire https github com Alamofire
  • 何时何地获取腕表复杂功能的数据

    经过几天的复杂工作后 我有信心对按规定间隔发生的更新的更新过程进行以下说明 The system calls requestedUpdateDidBegin This is where you can determine if your d
  • 快速崩溃“EXC_BREAKPOINT 0x0000000...”

    我的 iOS 应用程序确实发生了三种不同的崩溃情况 不同的代码位置 但所有三个都带有 exc breakpoint 0x000000 我无法重现它们 它们发生在不同的设备和不同的 iOS 版本上 如前所述 我无法重现它们 我们的测试人员都没
  • iOS 触觉反馈未触发

    我正在使用一些 UIGestures 特别是强制触摸 我已经完成了所有这些工作 额外的 UI 更新 动画都可以根据强制触摸进行工作 不过 我想添加硬压机上的触觉反馈 令我沮丧的是 这段代码不起作用 该函数已调用 界面已更新 但没有触觉反馈
  • SceneDelegate 和 AppDelegate 之间的区别

    在我的 SwiftUI 项目中我看到AppDelegate文件以及SceneDelegate file 它们之间有什么区别 例如在方法之间SceneDelegate scene willConnectTo options 并在AppDele
  • WKWebView CALayer 到图像导出空白图像

    我试图截取网页的屏幕截图 但图像始终为空白 白色 我正在使用此代码进行转换CALayer to Data 取自这里 https stackoverflow com a 41387514 4859791 extension CALayer G
  • 如何在 Firebase 的子级中检查子级中的数据

    标题可能看起来有问题 但我正在尝试弄清楚如何做到这一点 我的数据结构如下所示 我想看看每个频道中是否都有用户 这将检查是否有通道 channelRef observeSingleEvent of value with snapshot gt
  • Xcode 7.1 在归档 swift ios 应用程序时挂起

    Xcode 7 1 在归档应用程序时 挂在 复制 Swift 标准库 处 知道为什么吗 对于面临同样问题的其他人 在尝试了其他所有方法并失败后 通过重新启动 mac 来修复它 D
  • 测试在私有变量中保留其状态的类

    我正在为我的班级编写单元测试 此类在某些情况下保留其状态private变量 我不想公开暴露 所以场景是 如果我调用一个方法 第一次它会保持该状态private属性并调用委托方法并返回一些结果 当我第二次调用相同的方法时 输出将根据之前的输入
  • 如何使用 RealmSwift 存储字典?

    考虑以下模型 class Person Object dynamic var name let hobbies Dictionary
  • 添加滑动删除UITableViewCell

    我正在制作一个清单应用程序UITableView 我想知道如何添加滑动删除UITableViewCell 这是我的 ViewController swift import UIKit class ViewController UIViewC
  • iOS - Xcode 错误:由于系统完整性保护而无法附加到进程

    当我从 XCode 运行按钮运行应用程序共享扩展 然后尝试共享文件时 XCode 经常显示以下错误 有人知道是什么原因造成的吗 错误 由于系统完整性保护 无法附加到进程 系统完整性保护 SIP 又名无根 是 OS X 10 11 中的一项新
  • 由于不支持 URL 类型 http,因此无法打开该文件

    使用 iOS 9 我正在尝试使用NSFileManager s moveItemAtURL do print localURL http localhost 3000 api v1 activities print cacheFile fi
  • 增加导航栏高度

    我有以下代码 func navbarbutton UIView animateWithDuration 0 2 animations gt Void in let current self navigationController navi

随机推荐