BLE蓝牙开发 ANCS服务开发

在手表应用中,随着应用的复杂程度越来越高,通常离不开消息提醒的智能推送,所以这里主要针对ANCS做讲解,这是APPLE IOS系统的规范,android要想实现类似功能,一般采用私有协议方式,没有统一规范。

ANCS基本知识

ANCS(苹果通知中心, Apple Notification Center Service)的目的是提供给蓝牙外设一种简单、方便的获取ios设备通知信息的方式。使得蓝牙手环、手表可以收到苹果手机的来电、短信及各种应用的通知信息。
要想实现ANCS,就必须得绑定,连接过程大致分为如下几个步骤:
1、外设端进行广播,手机打开蓝牙,搜索外设,连接外设,之后进行绑定(这很重要,否则无法接收通知)
2、外设在连接建立后需要监听手机上的ANCS Service中的Notification Source;
3、当有通知时,手机会给外设发消息,说明是哪个应用的通知;
4、如果外设想进一步获取通知的详情,就往Control Point写控制信息,获取详情;
5、详情会通过Data Source发过来。
这在后面会结合代码说明。

专用名词

l ANCS:苹果通知中心服务
l NP(Notification Provider):通知的产生者,一般是ios设备
l NC(Notification Consumer):通知的消费者,一般是蓝牙设备
l iOS notification:ios设备里出现的通知
l GATT notification:GATT characteristic发送的通知

概念定义

如果没有特殊说明,通过ANCS传输的数值均使用小端模式;
如果没有特殊说明,通过ANCS传输的字符串均使用UTF-8编码。

服务

ANCS有一个私有的UUID,这个不是SIG的,是APPLE定义的私有UUID,且有三个必须的Characteristic类型。

Service UUID: 7905F431-B5CE-4E99-A40F-4B1E122D00D0
Notification Source UUID: 9FBF120D-6301-42D9-8C58-25E699A21DBD (notifiable)
基本通知源,通知一些计数的信息;
Control Point UUID: 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9 (writeable with response)
控制器,用于向IOS设备写入控制信息,例如想要读取的详情;
Data Source UUID: 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB (notifiable)
数据源,用于提供详细数据,在Control Point控制信息写入后通过此Characteristic返回。
在这里插入图片描述

关键接口

ancs_cbs

关键底层callback:以write result cb为例,最终都是进入到ance_client_cb
在这里插入图片描述

ancs_client_cb

ancs_client_cb为主要各种信息的回调接口,包括ANCS服务发现完成情况,接收来自IOS的消息,write point result包括enable\ disable, write 控制信息等),一般来说ancs服务发现完成后,就会调用ancs_set_data_source_notify来打开data source
1、在该cb中,当发现ancs服务完成后,
ancs_set_data_source_notify->ANCS_WRITE_DATA_SOURCE_NOTIFY_ENABLE->ANCS_WRITE_NOTIFICATION_SOURCE_NOTIFY_ENABLE对应的就是以下两个通道:
在这里插入图片描述
2、都打开完成后,当IOS有消息推送时
先触发ANCS_FROM_NOTIFICATION_SOURCE表示有这么回事,然后再调用app_parse_notification_source_data填入你要获取该消息的哪些信息,这里有过滤机制F_BT_ANCS_APP_FILTER,最后从底层返回write result,case ANCS_WRITE_CONTROL_POINT,
在这里插入图片描述
当消息来了的时候,ANCS_FROM_DATA_SOURCE里就会解析,一直到app_handle_notification_attribute_data里体现:
在这里插入图片描述

相关结构体

CategoryID

在这里插入图片描述

EventID

在这里插入图片描述

EventFlags

在这里插入图片描述

CommandID

在这里插入图片描述

NotificationAttributeID

在这里插入图片描述

AppAttributeID

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_24179601/article/details/113125129