0

我正在尝试使用Adafruit Feather 32u4 Bluefruit LE来实现Apple 通知中心服务,以便能够从我的 iPhone 接收通知到 Feather 板,通过串行连接将它们发送到我的 PC 并使用我编写的一些软件来处理它们.

我使用 AT+GATTADDSERVICE 和 AT+GATTADDCHAR 命令设置了 ANCS 服务和特性,但是当我尝试使设备可被发现并宣传使用 ANCS 服务时,设备将无法被发现。

这是我使用的命令:

AT+GAPSETADVDATA=02-01-06-11-06-79-05-F4-31-B5-CE-4E-99-A4-0F-4B-1E-12-2D-00-D0

在哪里:

  • 0x02:是有效载荷中第一条消息的字节长度
  • 0x01:是“数据类型值”,表示这是一个“标志”
  • 0x06:表示标志 LE General Discoverable Mode without BR/EDR support
  • 0x11:为第二条消息的字节长度(0x11为十进制的17个字节,1为“消息“Incomplete List of 128-bit Service Class UUIDs”的类型,16个字节为ANCS的UUID)
  • 0x06:是“128 位服务类 UUID 的不完整列表”的“数据类型值”
  • 0x7905F431B5CE4E99A40F4B1E122D00D0:是 ANCS 的 UUID。

但是,当我使用上述命令时,设备将无法被发现。你知道为什么吗?

在尝试解决问题时,我注意到如果我尝试宣传不同的服务,例如心率服务和设备信息服务,则该设备确实会在其他设备上可见。这是我使用的命令:

# Advertise as Discoverable and BLE only with 16-bit UUIDs 0x180D and 0x180A
AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18

您知道为什么在尝试宣传 ANCS 服务时设备不会变得可见吗?

谢谢!

PS我是蓝牙协议的新手,对不起。

4

1 回答 1

1

查看您提供的 ANCS的规格。它指出:

一个 NP 上可能只有一个 ANCS 实例。由于 iOS 的性质,不能保证 ANCS 始终存在。因此,NC 应查找并订阅GATT 服务的 Service Changed 特性,以便随时监控 ANCS 的潜在发布和取消发布。

再往下,您会发现显示您的 iPhone 是 NP 的数字,它是可能实现 ANCS 的那个。

ANCS:ios 通知的生命周期

您的 Feather 板将是中央,应该寻找服务并连接到它。正如@Paulw 在评论中所说,你的方法是错误的。

于 2021-03-22T06:10:44.233 回答