gpt4 book ai didi

ios - ANCS 客户端 : What is the basic procedure to be able to receive notifications?

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

我正在尝试使用 BlueZ 堆栈(最新版本,5.39)在 Linux 上用 C 实现 ANCS 客户端。至此我可以使用Apple提供的服务请求UUID设置BLE广告数据。

我的设备确实出现在 iPhone (iOS 9) 设置中。我也可以连接到设备,但连接非常不稳定,这意味着,有时过一会儿,当我关闭 iPhone 上的蓝牙设置子菜单时,连接就会终止。它也没有绑定(bind),断开连接后,设备没有显示在 iPhone 上的“我的设备”下。

我查看了hcidump,显然只是读取了一堆ATT数据,然后停止了:

Pastebin link, because it didn't format it correctly on here

连接终止后输出pastebin的下半部分。

现在,我的问题是,创建一个从 iOS 设备接收通知的 ANCS 客户端的下一步是什么?关于BLE和ANCS的文章和示例代码我看了无数,但还是一头雾水。

我是否必须在我的 C 代码中打开一个 L2CAP 套接字才能接受来自 iPhone 的连接?我已经尝试过了,没有用。我还尝试使用 gatttool 连接到 iPhone,当它连接时,它显示“资源或设备忙”。

我将非常感谢一些关于正确方向和下一步该做什么的指示。

最佳答案

好的,经过大量研究,我终于可以用自己的问题来回答了:

在我问这个问题之前我已经完成的事情:

  1. 设置广告数据发送ANCS的主服务UUID。

之后需要做什么:

  1. 停止蓝牙守护进程(您也可以在设置广告数据之前停止它,但据我所知它必须在某个时刻运行才能启动一些内核模块。)
  2. 使用 CID(ATT 的 channel 标识符 4)创建 L2CAP 套接字。安全级别必须为中等,这样内核将自动与 iPhone 配对。
  3. 绑定(bind)/监听/接受以等待来自 iOS 设备的连接
  4. 写入/读取蓝牙规范中定义的 ATT 消息

绝对应该查看 BlueZ 源代码中的 tools/btgatt-client.c 和 tools/bt-gatt-server.c。它准确地显示了如何打开套接字(使用 sockopt 等)

希望这可以帮助任何像我一样努力解决这个问题的人。

关于ios - ANCS 客户端 : What is the basic procedure to be able to receive notifications?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36775525/

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