iOS的 ANCS服务

最近遇到好多人问iOS的ANCS服务怎么做,感觉很难,其实只是我们自己没理解清而已,做起来的话,很简单,没想象的那么难。现在市面有许多蓝牙手表、手环等都能接收到苹果手机的系统通知,那这是怎么实现的呢?

其实,这都有赖于苹果IOS 7开始提供的ANCS协议,ANCS(苹果通知中心, Apple Notification Center Service)的目的是提供给蓝牙外设一种简单、方便的获取ios设备通知信息的方式。使得蓝牙手环、手表可以收到苹果手机的来电、短信及各种应用的通知信息

简单说明一下:

ANCS通过蓝牙BLE 4.0实现,仅支持iPhone 4S及以上且系统版本在IOS 7以上的手机,同时在外设端需要支持蓝牙4.0协议。

1、外设端进行广播,手机打开蓝牙,搜索外设,连接外设,之后进行绑定(这很重要,否则无法接收通知)

2、外设在连接建立后需要监听手机上的ANCS Service中的Notification Source

3、当有通知时,手机会给外设发消息,说明是哪个应用的通知

4、如果外设想进一步获取通知的详情,就往Control Point写控制信息,获取详情

5、详情会通过Data Source发过来

ANCS的使用没有依赖,它是蓝牙的一个GATT协议,任何一个实现了GATT client的设备可以方便的从ios设备获取通知信息。

概念定义

l  ANCS:苹果通知中心服务

l  NP(Notification Provider):通知的产生者,一般是ios设备

l  NC(Notification Consumer):通知的消费者,一般是蓝牙设备

l  iOS notification:ios设备里出现的通知

l  GATT notification:GATT characteristic发送的通知

Service定义

ANCS使用了一个私有UUID作为其Service的UUID:

7905F431-B5CE-4E99-A40F-4B1E122D00D0

NP(手机)上只有一个ANCS实例,基于ios的机制,ANCS没有办法保证一直运行。

所以NC(外设)需要搜索并且监听(subscribe)Service Changed characteristic,以保证能够监听到所有通知。

Characteristic类型

所涉及的characteristic

 1、Notification Source:

   UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(notifiable)

   基本通知源,通知一些计数的信息;


 2、Control Point:

   UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(writeable with response)

   控制器,用于向ios设备写入控制信息,例如读取详情;

3、Data Source:

   UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(notifiable)

   数据源,用于提供详细数据,在控制信息写入后通过此characteristic返回;

还有许多其他characteristic,不过只有Notification Source是强制的,其他的都是可选的。

最后:我想说明一下,也是大家都比较关心的一个点,我也查看了好多资料,但大部分资料上说的都不是很清楚,就是,使用系统的ANCS服务,我们软件这边是不需要写任何的代码的,我们只是做好蓝牙的扫描连接就好,都是硬件那边要做,等硬件做好支持ANCS服务的相关响应和操作之后,在打开应用的时候,系统检测到该硬件设备支持ANCS服务,并如果是第一次连接到硬件,就会提示跟硬件进行配对,当用户点击配对之后,就开始通过蓝牙连接设备,而等手机端产生通知消息的时候,系统会自动把这条通知消息,通过ANCS发送到硬件上面,硬件收到之后,就会进行相应的响应,比如:显示出信息内容,响铃,震动等。而发送消息给硬件的这条路径就是蓝牙,虽然我们在代码里面没有写任何发送消息的内容,还可以通过蓝牙发送过去,那是因为,这一步,系统已经帮我们做好了,系统在ANCS上面做好了封装,我们不用管,就会帮我们发过去,所以,只需硬件做好就可以了。另外:第一次连接的时候,会提示配对,以后进行连接的时候,配对过的就不会提示,没有配对过的才会提示。

你可能感兴趣的:(iOS的 ANCS服务)