gpt4 book ai didi

ios - Sphero 连接 : Should I call setupRobotConnection and handleRobotOnline in each UIViewController or only once per app?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:11 26 4
gpt4 key购买 nike

我创建了一个 iOS 应用程序,其中包含 3 个启用了 Sphero 的流程。我最终在每个 viewDidLoad 中在线重写了 setupRobotConnection 和 handleRobot,然后在每个 prepareForSegue 方法中关闭了连接。它在大多数情况下都有效,但 NavigationController 的后退按钮可能会把事情搞砸。我认为这不是连接到 Sphero 并保持连接的最佳方式。

对于我的应用程序,每个流程对 handleRobotOnline 的需求略有不同流程 1:无驱动,需要 dataStreaming 和 AsyncData流程 2:用于发送命令的多人游戏类。流程 3:使用需要数据流和异步数据的 1 个 View 进行操纵杆驱动

我的问题是:对于多 View 应用程序,哪里是执行以下操作的最佳位置:1) 订阅应用通知?2)订阅机器人在线/离线通知?3) 检查应用程序与机器人的连接类型是否正确(driveControl、sharedMultiplayer、dataStreaming)?

如果需要我可以粘贴代码

最佳答案

最好管理您与 Sphero 的连接并在一个地方打开/关闭它。我发现在 AppDelegate 或 RootViewController 中执行此操作最简单。

对于 AppDelegate:

  • 在 applicationDidBecomeActive 和 applicationWillEnterForeground 上打开连接
  • 在 applicationWillResignActive 和 applicationWillTerminate 上关闭连接
  • 在应用程序 didFinishLaunchingWithOptions 中注册机器人状态通知

如果您想在 RootViewController 中管理连接,请在加载时注册机器人通知以及上述相同的应用程序状态通知,并执行相同的连接处理。

通过在您的 AppDelegate/RootViewController 中进行连接,您可以让您的其他 ViewController 不关心处理连接。如果您有在 AppDelegate/RootViewController 中通知用户的逻辑,您可以让他们假定 Sphero 已连接,或者您可以共享状态。

至于您提到的特定用例,我会推荐以下内容:1.在viewDidLoad上添加数据流和响应观察器,你也应该在这里启用数据流。移除 viewDidUnload 上的观察者并禁用数据流。2. 像往常一样使用这里的多人游戏类(class)。3.在viewDidLoad上添加数据流和响应观察器,你也应该在这里启用数据流。移除 viewDidUnload 上的观察者并禁用数据流。正常发送操纵杆滚动命令。

如果您想了解有关机器人连接状态更改的信息,您可以在每个 View viewDidLoad/viewDidUnload 调用中注册/注销连接通知。

关于ios - Sphero 连接 : Should I call setupRobotConnection and handleRobotOnline in each UIViewController or only once per app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com