热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

corebluetooth和ios状态

如何解决《corebluetooth和ios状态》经验,为你挑选了1个好方法。

使用corebluetooth库成功连接了我的BLE设备,并在我的ios应用程序上为其设置了某些服务的通知值.在前景和后台模式下工作正常.

我目前将设备的标识符保存到UserDefaults,并且需要ios设备始终始终连接到设备.

问题:使用ios应用程序的状态实现corebluetooth的最佳实践是什么?特别:

    用户打开应用程序时应该实现什么?(目前:我使用保存的标识符重新连接到ble设备..但这是必要的,因为corebluetooth应自动保持与设备的连接)

    当用户为应用程序提供背景时应该实现什么?

    当用户从后台重新打开应用程序时应该实现什么?(我应该重新连接到设备吗?)

    当用户杀死应用程序时应该实现什么?corebluetooth连接是否断开连接?

    当电池电量低并且蓝牙被设备断电或关闭时应该实施什么?

最后:

是否有必要在单例类中实现corebluetooth库,以确保应用程序只使用一个蓝牙管理器连接到设备?



1> Max Pevsner..:

以下是一些建议和最佳(我可以看到)实践.这些不是一成不变的:

    当用户打开应用程序时,它不一定会重新连接到设备.所以你的方法很好.但是,您应该检查应用是否要重新连接.

    当用户为应用程序提供背景并且设备已连接时,设备将保持连接状态.除非有一些特殊情况,否则没有什么可以实现 我们稍后会找到他们.

    当用户将应用程序带到前台(从后台重新打开)并且在将应用程序发送到后台之前设备已连接时,它仍然保持连接状态.所以没有什么可以实现的.

    当用户杀死应用程序时,设备已断开连接,您无能为力.当用户再次打开应用程序时,您可以尝试重新连接到设备.

    我会监控设备电池(偶尔检查一下),当电池达到临界水平时,假设为5%,断开与设备的连接.

最后:没有必要将其实现为单身人士.虽然只有一个对象可以处理所有蓝牙连接,但非常方便.所以,我会说,单身是一个不错的选择.

一般来说,你必须考虑两种情况:

    应用程序被系统杀死(可能是因为内存压力或崩溃).当应用程序在后台被杀死时,系统将重新启动它并func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any])调用该函数.在此功能中,您应该尝试重新连接到蓝牙设备.当应用程序在前台被系统杀死时,有时(根据我的经验)将调用相同的函数.所以你应该做同样的事情.如果没有调用 - 请参阅以下段落.

    该应用程序被用户杀死.在这种情况下,您无法重新启动应用程序.但是当用户再次打开它时,您应该检查最新的连接状态,并尝试在需要时重新连接到设备.由于您保存连接的设备UserDefaults(这是正确的),您应该拥有所有需要的属性.

对于任何其他情况 - 由于蓝牙关闭(在设备上或在电话上)或由于设备超出范围而断开连接,系统将处理重新连接.所以基本上,这里没什么可做的.

再一次,所有这一切都不是刻在石头上.这就是我实现它的方式,它工作正常.


推荐阅读
author-avatar
lily-SweetDream_828
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有