首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoreBluetooth:测试状态保存和恢复

CoreBluetooth:测试状态保存和恢复
EN

Stack Overflow用户
提问于 2015-10-14 09:57:45
回答 1查看 806关注 0票数 2

我正在使用Xcode 7,我想了解如何使用BLE附件和CoreBluetooth框架在CoreBluetooth中测试“状态保存和恢复”(请不要说我已经找到了this question,但我觉得需要更深入地理解这一点)。

我需要应用程序自动传输一些数据从附件时,只有当用户的手机在范围内,也是为了防止应用程序之前没有运行。

我试图在三个反映这个用例不同变化的场景中分解这一点,即场景A、场景B和场景C。

有人能解释一下测试以下场景所需的基本步骤吗?

也认为这些场景有意义吗?

  • 设想A: 应用程序发现附件并存储附件信息。 2-应用程序/用户退出附件范围 3- app被用户杀死。 4-用户重新进入配件范围,而应用程序没有运行。 5-预期事件:我期望状态恢复被激活,(willRestoreState方法在CentralManager中被调用,didFinishLaunchingWithOptions在AppDelegate中被调用。 从这里,我应该能够得到包括附件在内的外围设备列表,并决定是否要连接到它。 6-如果我决定连接,那么我希望应用程序继续运行在后台(背景模式被激活)。

我如何测试这个场景?

  • 设想B: 应用程序发现附件并存储附件信息。 2- app连接到附件,并将请求发送给特性以开始传输数据。 3- app正在从附件接收数据。 4-应用程序/用户退出附件范围 5- app进入后台模式 6-用户重新进入配件范围,而应用程序是在后台模式运行。 5-预期事件:我期望状态恢复被激活,(willRestoreState方法在CentralManager中被调用,didFinishLaunchingWithOptions在AppDelegate中被调用。 从这里,我应该能够得到外围设备的列表,包括附件,并看到状态是连接的。然后我应该重新请求数据流(我假设没有办法恢复以前的数据流,对吗?) 6- app应该在后台继续进行流。

我如何测试这个场景?

  • 设想C: 应用程序发现附件并存储附件信息。 2- app连接到附件,并将请求发送给特性以开始传输数据。 3- app正在从附件接收数据。 4-应用程序/用户退出附件范围 5- app进入后台模式 6-用户杀死应用程序 7-当应用程序不运行时,用户重新进入附件范围 8-预期事件:我期望状态恢复被激活,(willRestoreState方法在CentralManager中被调用,didFinishLaunchingWithOptions在AppDelegate中被调用。 从这里,我应该能够得到外围设备的列表,包括附件和重新连接到它,并重新请求数据传输(恢复它作为场景B)。 9-我预计应用程序将在后台继续运行(背景模式被激活),并且应用程序应该在后台继续运行。

我如何测试这个场景?

希望不是太令人困惑。

EN

回答 1

Stack Overflow用户

发布于 2016-02-09 12:15:29

对于场景A,我怀疑你能做任何事情。如果用户通过双击Home按钮并滑动应用程序来杀死你的应用程序,该应用程序就会消失,不再参与所有这些花哨的蓝牙聊天。这款从未发布过的应用也是如此-- iOS不会告诉它任何事情,也不会试图唤醒它。

在场景B中,您很可能不需要处理willRestoreState,因为现代智能手机(5s,6)即使在上面发布了大量的重型应用程序,也不会杀死您挂起的应用程序。当你离开配饰范围时,这个应用程序就会悄然断开。然后,如果您指示它立即开始扫描附件(在didDisconnectPeripheral),它将这样做了很长时间。不经常,但还是。因此,当您再次进入附件范围时,iPhone将最终连接到它并触发所有所需的回调。willRestoreState似乎只适用于iPhone 4,可能是iPhone 5,但我并没有很长时间使用这个功能来完全确定。

如果您确实需要测试willRestoreState场景,可以将本地通知添加到didFinishLaunchingWithOptionswillRestoreState,以确保它们被触发,以及( B)用Xcode运行应用程序,然后按CMD+停止。或单击Xcode中的方形按钮。这将导致应用程序以与系统在内存问题上杀死它的方式相同的方式终止,因此您应该看到您的通知。从现在开始,您可以编写代码、添加日志语句并观察设备日志中发生的情况。

另一种测试状态恢复的方法是点击按钮后调用kill(getpid(), SIGKILL);

场景C-抱歉,同样的故事。如果用户故意杀死你的应用程序,你就完蛋了。告诉他别这么做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33122242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档