V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
APICloud
V2EX  ›  推广

再见, BLE 的那些坑!

  •  
  •   APICloud · 2018-12-24 11:40:16 +08:00 · 2321 次点击
    这是一个创建于 2140 天前的主题,其中的信息可能已经有所发展或是发生改变。

    蓝牙,平常你用的多吗? 上班路上戴着蓝牙耳机听音乐、看视频 打开蓝牙分享个人热点给小伙伴们 解锁共享单车时,打开蓝牙就能迅速解锁 ......

    BLE —蓝牙低能耗技术,方便了我们的生活,但是开发者在开发过程中却遇到了不少坑,尤其对小白用户来说坑真的太多了,都是安卓、iOS 系统惹的祸。

    今天,柚子君给大家分享一个解决 BLE 那些坑的经验,希望能帮助更多人。

    项目中用到 BLE 模块时,要注意以下问题:

    ❶ 用示例代码安卓系统扫描蓝牙设备就无法成功,而苹果则没问题。

    ✓ 解决办法:将 serviceUUIDs: ['', '']改为 serviceUUIDs: []即可。一次扫描不出来可以多扫描几次。

    ❷ 安卓和苹果的设备 UUID 不一样,安卓为 xx:xx:xx:xx:xx:xx 格式,苹果为 GUID 格式。

    ✓ 解决办法:以你扫描获取的 UUID 访问设备就行了。 ❸ 安桌和苹果的服务 UUID 和服务特征 CharacteristicsUUID 不一样(服务 UUID 和服务特征 CharacteristicsUUID 是父子关系)。 安卓为 GUID 格式,苹果为短格式。两者扫描出的服务数也不一样,苹果只扫描出用户能调用的,安卓会把系统级的也扫描出来,安卓一般第 3 个服务是用户能调用的。 ✓ 解决办法:以你扫描获取的获取的服务 UUID 的服务特征 CharacteristicsUUID 访问就行了。

    ❹ 最重要的一点,也是为什么调用老不对的问题。

    ✓ 解决办法:不管你是否知道设备 UUID,服务 UUID,蓝牙是否打开。请一定要按步骤调用:扫描设备->连接设备->获取所有服务 UUID

    ->服务 UUID 对应的所有服务特征 CharacteristicsUUID。这些步骤走完了,才能调用服务 UUID 和对应的服务特征 CharacteristicsUUID。

    ▌本文作者:APICloud 版主 scmyzyh

    feimo123
        1
    feimo123  
       2018-12-24 12:18:05 +08:00 via iPhone
    楼主有 iOS 蓝牙打印的经验吗?可以交流下😄
    Kwan7s
        2
    Kwan7s  
       2018-12-24 23:56:00 +08:00 via iPhone
    同问,刚好最近有需要~
    uleh
        3
    uleh  
       2018-12-25 09:13:46 +08:00
    还有低版本 BLE 的 MTU size、BLE 设备的 MAC 是动态的、数据包收发不稳定会超时…………………………
    BLE 坑太多了。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2727 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:29 · PVG 20:29 · LAX 05:29 · JFK 08:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.