ancs demo ios
2018-07-09 16:48:00 weixin_34166472 阅读数 9

最近遇到好多人问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上面做好了封装,我们不用管,就会帮我们发过去,所以,只需硬件做好就可以了。另外:第一次连接的时候,会提示配对,以后进行连接的时候,配对过的就不会提示,没有配对过的才会提示。

转载于:https://www.jianshu.com/p/59d308798f2d

2016-08-18 13:27:59 MrFine001 阅读数 1175

ANCS 服务

服务名: AppleNotification Center Service

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

 

角色:

    NC:Notification Consumer  (i410e)

    NP:Notification Provider  (iOS设备)

服务特征值:

Notification Source:

 UUID9FBF120D-6301-42D9-8C58-25E699A21DBD (notifiable)

Control Point:

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

Data Source:

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

 

Note:访问该服务需要进行配对。

 

NotificationSource

iOS设备(NP)用来通知i410e(NC)相应的通知;当i410e订阅(set Notify)该特征值后就可以接收通知消息(i410e已自动执行);

格式:


 

Category count: iOS通知中当前category的数量;(例如当有两个未读邮件的时候,又收到一个邮件通知,categoryCount就为3);

NotificationUID: 一个32位的唯一的数字ID,通过这个ID可以用来发送命令操作iOS通知。

  

Control Point 和 Data Source

NC可以通过Control Point 对iOS通知执行操作;(获取通知内容或者删除通知等)

NC通过对Control Point特征值写特殊的命令来实现获取通知内容等操作,如果执行成功,NP就会迅速的通过Data Source 特征值的发送通知内容到NC来响应该操作。

 

获取通知属性


该命令通过Control Point发出

CommandID :固定为0;

NotificationID: 特定通知的ID,通过NS 的通知获取。

 

NP端响应格式:

该响应通过DS通知给到NC

 

CommandID :固定为0;

NotificationID: 特定通知的ID,通过NS 的通知获取。

Attribute List:一个格式为AttributeID/16位长度值/Attribute列表的Attribute值,每个Attribute必须是字符串但是不是Null结尾,如果一个Attribute是空或者iOS忽略,则将其长度值设为0.

 

Attribute List如果超过MTU长度则会被拆分多个帧。

 

获取App属性

通过Control Point发出

CommandID :固定为1;

AppIdentifier:app的字符串标识符,以Null结束。


响应:

通过DS通知给到NC


CommandID :固定为1;

AppIdentifier:app的字符串标识符,以Null结束。

Attribute List:一个格式为AttributeID/16位长度值/Attribute列表的Attribute值,每个Attribute必须是字符串但是不是Null结尾,如果一个Attribute是空或者iOS忽略,则将其长度值设为0.

 

Attribute List如果超过MTU长度则会被拆分多个帧。

 

对通知执行操作


从iOS8之后,NP可以通知NC一些相关的动作(接通、挂断电话;删除通知等),NC可以根据NP的通知执行对应的操作。

 

从NS的通知event flag中 EventFlagPositiveAction和EventFlagNegativeAction位可以判断是否能够执行对应的操作。

通过获取通知属性对应的属性IDNotificationAttributeIDPositiveActionLabel和NotificationAttributeIDNegativeActionLabel可以获取到对应的操作描述(接听/挂断、清楚)。

 

错误码:

对Control Point执行操作的时候,收到的NP端未识别的操作的响应


I410e 返回有区别,以规范为准。

0xAA0,

0xAA1,

0xAA2,

0xAA3,

 

 

 

2017-07-05 16:28:00 weixin_33975951 阅读数 5
导语

智能BLE硬件设备需要实时获取Android和iOS端通知,那他们分别是怎么实现的呢?

一,探讨Android &iOS 区别
  • Android端手机是通过NotificationListenerService服务来获取通知栏上的信息,当然这个服务需要获取到对应的权限.通过服务获取到的具体消息,然后通过BLE或者传统蓝牙传输到智能硬件端.然后智能硬件显示该消息
  • iOS 端手机是通过ANCS服务来获取对应消息,该服务在开机后就启动啦,只等订阅设备来订阅。智能硬件端订阅ANCS服务成功后,一旦有新消息,比如来电或者其它App推送消息,苹果通知中心NotificationCenter就推送一份到订阅设备上,同时往通知中心上推送一份。
    总结如下结论:
    iOS端手表或手环设备获取到消息几乎是同时的。速度较快
    Android设备需要继承通过对应的服务,然后在通过自己的传输协议传到手表或手环端,速度上较iOS慢点。
二, 初见ANCS

ANCS(Apple Notification Center Service)意思是苹果通知中心服务,它是苹果提供给周边蓝牙设备(手环、手表等智能设备)通过BLE(低功耗蓝牙)访问iOS设备上的各类通知的一种机制.
ANCS协议中的通用属性协议(Generic Attribute Profile,GATT)协议实现的,它是GATT协议的一个子集。
在ANCS协议中,iOS设备作为server端,既数据提供者NP(Notification Provider),充当Peripheral端的角色.
周边设备如智能手表或者手环作为client端即数据消费者Notification Consumer (NC),充当Central,主要是用来连接和使用ANCS server提供的服务,如何从服务中获取对应的信息。
ANCS作为Perpheral暴露给外界设备的服务UUID是7905F431-B5CE-4E99-A40F-4B1E122D00D0,所以通过该service就能获取到对应的特征值,然后获取特征值里面的内容。
ANCS给我们提供了下面3种特征值(Characteristic)

  • Notification Source:
    UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(notifiable)
    基本通知源,通知一些计数的信息,可以通过notification 获取uuid,
  • Control Point:
    UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(writeablewithresponse)
    控制器,用于向ios设备写入控制信息,例如读取详情 ,接听来电,拒绝来电等
  • Data Source:
    UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(notifiable)
    数据源,用于提供详细数据,在控制信息写入后通过此characteristic返回

所以智能BLE设备需要订阅Notification Source 和 Control Point 来获取DataSource数据源信息,下面对上面Characteristic特征值进行详细解释.

1)Notification Source

2155810-afd09bcdbd08b7c7.png
Notification Source.png
  • EventID Values 如下Table

| EventID Values | 值 | 代表含义|
| ------------- |:-------------:|
| EventIDNotificationAdded | =0 | 消息是新来的|
| EventIDNotificationModified | =1 |消息是修改的 |
| EventIDNotificationRemoved | =2 |移除消息 |
| Reserved EventID values | = 3–255 | 其它|

  • EventFlags如下Table
EventFlags Values
EventFlagSilent = (1 << 0)
EventFlagImportant = (1 << 1)
EventFlagPreExisting = (1 << 2)
EventFlagPositiveAction = (1 << 3)
EventFlagNegativeAction = (1 << 4)
Reserved EventFlags = (= (1 << 5)–(1 << 7))
  • CategoryID 代表该消息的类型
CategoryID Values 代表含义
CategoryIDOther = 0 其他类别
CategoryIDIncomingCall = 1) 来电消息
CategoryIDMissedCall = 2 miss电话消息
CategoryIDVoicemail = 3 voice mail消息
CategoryIDSocial = 4 社交类消息 比如微信facebook等
CategoryIDSchedule =5 schedule消息
CategoryIDEmail =6 Email消息
CategoryIDNews =7 News消息
CategoryIDHealthAndFitness =8 健康类消息
CategoryIDBusinessAndFinance =9 财经类消息
CategoryIDLocation =10 location消息
CategoryIDEntertainment =11 娱乐类消息
Reserved CategoryID values = 12–255 其他类消息
  • CategoryCount:给定类型中活跃的通知的数量。例如,邮箱中有两封未读的邮件,这个时候又来了一封新的邮件,那么通知的邮件的数量将是3

  • NotificationUID:
    32byte 唯一标示该消息.后续Control Point需要用这个NotificationUID,可以获取到具体的信息datasource.

比如下面消息就是获取到一个

2)Control Point
NC设备需要更多信息,这个时候可以用Control Point获取通知属性命令使得NC可以得到某个特定通知的详细属性,比如短信的发送人,短信内容,时间,App name 等。

2155810-6cd82343febb90ee.png
image.png
  • CommandID: 设为零 (CommandIDGetNotificationAttributes),0x00
  • NotificationUID: 想要获得的通知的uid,32位数字是通知的唯一标示。
  • AttributeIDs:NC想要获得的属性列表。有些属性可能需要后面接一个16位的的参数,0xff 0xff。

想要获取具体某条信息可以通过下面的方法

 public static byte[] getNotificationByUID(byte[] uid){
   byte appNameCapacity=100;//app name 最长容量
   byte  titleCapacity=50;//title 最长
   byte  subtitleCapactiy=100;//subtitle
   byte msgCapacity=248;//msg最大容量
   byte size=10;
   byte dateCapacity=10;
   ByteArrayOutputStream bout=new ByteArrayOutputStream();
   bout.write(0);//注意此处是commonID 一般情况是0
   bout.write(uid),//把notification uid 传过来
   bout.write(1);
   bout.write(titleCapacity);
   bout.write(0);
   bout.write(2);
   bout.write(subtitleCapactiy);
   bout.write(0);
   bout.write(3);
   bout.write(msgCapacity);
   bout.write(0);
   bout.write(4);
   bout.write(size);
   bout.write(0);
   bout.write(5);
   bout.write(dateCapacity);
   bout.write(0);
   bout.write(0);
   bout.write(appNameCapacity);
   byte[] req=bout.toByteArray();
   bout.reset();
   return req;
}

通过Control Point 传输上面的byte 流给iOS NSNotification center,iOS会根据传输过来的byte流,传回具体信息到设备订阅端,设备通过回调函数解析传过来的byte流。下面获取到byte流如下:

2155810-b7de693013e11420.png
image.png

通过上面的byte数据结构可以写出对应的parse函数。获取具体的数据。通过1Byte AttritbuteID 知道是具体哪个NotificationAttributeID Values,2个byte AttributeLength 知道后面data有几位byte ,byte 数据 紧跟在AttributeLength后面.

NotificationAttributeID Values

NotificationAttributeIDAppIdentifier Values 代表含义
NotificationAttributeIDAppIdentifier = 0 其他类别
NotificationAttributeIDTitle =1 表示title
NotificationAttributeIDSubtitle =2 subtitle
NotificationAttributeIDMessage =3 具体Message
NotificationAttributeIDMessageSize =4 具体Message大小
NotificationAttributeIDDate =5 具体date
NotificationAttributeIDPositiveActionLabel =6
NotificationAttributeIDNegativeActionLabel =7
Reserved NotificationAttributeID values =8-255

Note NotificationAttributeIDDate 获取对应的数据格式是yyyyMMdd'T'HHmmSS,所以获取到对应的Date,要用这种格式来解析.

3)整体NP和NC交换流程

2155810-94b08308760d542d.png
image.png

4)Notification Actions
从iOS8开始,NP发送的iOS通知起始可以间接的告诉NC可执行哪些动作。接着,NC就可以针对指定的iOS通知,请求NP执行一个动作。
通知源特征上生成的GATT通知包含一个叫做Eventflags的数据域,NC根据这个数据域就可得知对一条iOS通知可以执行哪些操作:

EventFlagPositiveAction:积极动作(Positive Action),与iOS通知相关。
EventFlagNegativeAction:消极动作(Negative Action),与iOS通知相关。

比如iPhone来电啦,接听来电可以用EventFlagPositiveAction action来
拒绝来电的时候用EventFlagNegativeAction action来.
通过下面代码就可以实现具体挂电话or接话等操作:

public static byte[] getActionCommend(byte[] uid,int actionId){
  ByteArrayOutputStream out=new ByteArrayOutputStream();
  out.write(2);
  out.write(uid);
  out.write(actionId);
  byte [] req=out.toByteArray();
  out.reset();
  return req;
}

ActionID Values :

ActionID Values
ActionIDPositive =0
ActionIDNegative =1
Reserved ActionID values =2-255

转载于:https://www.jianshu.com/p/0c5e92ed8ee1

2018-11-16 10:56:52 amwjatyvh 阅读数 34

IOS的ANCS服务,有相关BLE背景的人都可以到苹果开发者官网查看,看中文的随便百度都可以找到。

对于ANCS的机制我也不是很清楚,这里简单介绍下目前我遇到的在百度很难找到想要的资料:

ANCS里的"Get APP Attributes",正是根据原先的"Get Notiffication Attributes"中获取到的event id进行获取更进一步消息的操作。

而“Get APP Attributes"里有一项是,”AppIdentifier"在这里官网的解释是:The string identifier of the app the client wants information about. This string must be NULL-terminated.

其实这个AppIdntifier在IOS系统应用开发者的解释中,便是该应用的Bundle Id。

正题,Bundle Id也就是ANCS服务中提到的App Id。而在百度的时候,一直很难找到App Id,去google也很难找到,直接了解到这个在IOS应用开发者口中,类似于bundle id,才找到该id。

从此,BLE开发固件的,当客户需要你的设备通过ancs获取到哪个app的id来显示他需要的通知,你如果手头上的code是没有存到的,可以到这个网站来搜索一下:https://offcornerdev.com/bundleid.html

下面如果有相关的ancs服务讨论,我懂的都会争取回答上,谢谢合作。

2017-12-14 02:33:44 weixin_33729196 阅读数 63

#####导语

智能BLE硬件设备需要实时获取Android和iOS端通知,那他们分别是怎么实现的呢?

#####一,探讨Android &iOS 区别

  • Android端手机是通过NotificationListenerService服务来获取通知栏上的信息,当然这个服务需要获取到对应的权限.通过服务获取到的具体消息,然后通过BLE或者传统蓝牙传输到智能硬件端.然后智能硬件显示该消息
  • iOS 端手机是通过ANCS服务来获取对应消息,该服务在开机后就启动啦,只等订阅设备来订阅。智能硬件端订阅ANCS服务成功后,一旦有新消息,比如来电或者其它App推送消息,苹果通知中心NotificationCenter就推送一份到订阅设备上,同时往通知中心上推送一份。 总结如下结论: iOS端手表或手环设备获取到消息几乎是同时的。速度较快 Android设备需要继承通过对应的服务,然后在通过自己的传输协议传到手表或手环端,速度上较iOS慢点。

#####二, 初见ANCS ANCS(Apple Notification Center Service)意思是苹果通知中心服务,它是苹果提供给周边蓝牙设备(手环、手表等智能设备)通过BLE(低功耗蓝牙)访问iOS设备上的各类通知的一种机制. ANCS协议中的通用属性协议(Generic Attribute Profile,GATT)协议实现的,它是GATT协议的一个子集。 在ANCS协议中,iOS设备作为server端,既数据提供者NP(Notification Provider),充当Peripheral端的角色. 周边设备如智能手表或者手环作为client端即数据消费者Notification Consumer (NC),充当Central,主要是用来连接和使用ANCS server提供的服务,如何从服务中获取对应的信息。 ANCS作为Perpheral暴露给外界设备的服务UUID是7905F431-B5CE-4E99-A40F-4B1E122D00D0,所以通过该service就能获取到对应的特征值,然后获取特征值里面的内容。 ANCS给我们提供了下面3种特征值(Characteristic)

  • Notification Source:    UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(notifiable)    基本通知源,通知一些计数的信息,可以通过notification 获取uuid,
  • Control Point:    UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(writeablewithresponse)    控制器,用于向ios设备写入控制信息,例如读取详情 ,接听来电,拒绝来电等
  • Data Source: UUID 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(notifiable)    数据源,用于提供详细数据,在控制信息写入后通过此characteristic返回

所以智能BLE设备需要订阅Notification Source 和 Control Point 来获取DataSource数据源信息,下面对上面Characteristic特征值进行详细解释.

1)Notification Source

  • EventID Values 如下Table

| EventID Values | 值 | 代表含义| | ------------- |:-------------:| | EventIDNotificationAdded | =0 | 消息是新来的| | EventIDNotificationModified | =1 |消息是修改的 | | EventIDNotificationRemoved | =2 |移除消息 | | Reserved EventID values | = 3–255 | 其它|

  • EventFlags如下Table
EventFlags Values
EventFlagSilent = (1 << 0)
EventFlagImportant = (1 << 1)
EventFlagPreExisting = (1 << 2)
EventFlagPositiveAction = (1 << 3)
EventFlagNegativeAction = (1 << 4)
Reserved EventFlags = (= (1 << 5)–(1 << 7))
  • CategoryID 代表该消息的类型
CategoryID Values 代表含义
CategoryIDOther = 0 其他类别
CategoryIDIncomingCall = 1) 来电消息
CategoryIDMissedCall = 2 miss电话消息
CategoryIDVoicemail = 3 voice mail消息
CategoryIDSocial = 4 社交类消息 比如微信facebook等
CategoryIDSchedule =5 schedule消息
CategoryIDEmail =6 Email消息
CategoryIDNews =7 News消息
CategoryIDHealthAndFitness =8 健康类消息
CategoryIDBusinessAndFinance =9 财经类消息
CategoryIDLocation =10 location消息
CategoryIDEntertainment =11 娱乐类消息
Reserved CategoryID values = 12–255 其他类消息
  • CategoryCount:给定类型中活跃的通知的数量。例如,邮箱中有两封未读的邮件,这个时候又来了一封新的邮件,那么通知的邮件的数量将是3

  • NotificationUID: 32byte 唯一标示该消息.后续Control Point需要用这个NotificationUID,可以获取到具体的信息datasource.

比如下面消息就是获取到一个

2)Control Point NC设备需要更多信息,这个时候可以用Control Point获取通知属性命令使得NC可以得到某个特定通知的详细属性,比如短信的发送人,短信内容,时间,App name 等。

  • CommandID: 设为零 (CommandIDGetNotificationAttributes),0x00
  • NotificationUID: 想要获得的通知的uid,32位数字是通知的唯一标示。
  • AttributeIDs:NC想要获得的属性列表。有些属性可能需要后面接一个16位的的参数,0xff 0xff。

想要获取具体某条信息可以通过下面的方法

 public static byte[] getNotificationByUID(byte[] uid){
   byte appNameCapacity=100;//app name 最长容量
   byte  titleCapacity=50;//title 最长
   byte  subtitleCapactiy=100;//subtitle
   byte msgCapacity=248;//msg最大容量
   byte size=10;
   byte dateCapacity=10;
   ByteArrayOutputStream bout=new ByteArrayOutputStream();
   bout.write(0);//注意此处是commonID 一般情况是0
   bout.write(uid),//把notification uid 传过来
   bout.write(1);
   bout.write(titleCapacity);
   bout.write(0);
   bout.write(2);
   bout.write(subtitleCapactiy);
   bout.write(0);
   bout.write(3);
   bout.write(msgCapacity);
   bout.write(0);
   bout.write(4);
   bout.write(size);
   bout.write(0);
   bout.write(5);
   bout.write(dateCapacity);
   bout.write(0);
   bout.write(0);
   bout.write(appNameCapacity);
   byte[] req=bout.toByteArray();
   bout.reset();
   return req;
}
复制代码

通过Control Point 传输上面的byte 流给iOS NSNotification center,iOS会根据传输过来的byte流,传回具体信息到设备订阅端,设备通过回调函数解析传过来的byte流。下面获取到byte流如下:

通过上面的byte数据结构可以写出对应的parse函数。获取具体的数据。通过1Byte AttritbuteID 知道是具体哪个NotificationAttributeID Values,2个byte AttributeLength 知道后面data有几位byte ,byte 数据 紧跟在AttributeLength后面.

NotificationAttributeID Values

NotificationAttributeIDAppIdentifier Values 代表含义
NotificationAttributeIDAppIdentifier = 0 其他类别
NotificationAttributeIDTitle =1 表示title
NotificationAttributeIDSubtitle =2 subtitle
NotificationAttributeIDMessage =3 具体Message
NotificationAttributeIDMessageSize =4 具体Message大小
NotificationAttributeIDDate =5 具体date
NotificationAttributeIDPositiveActionLabel =6
NotificationAttributeIDNegativeActionLabel =7
Reserved NotificationAttributeID values =8-255

Note NotificationAttributeIDDate 获取对应的数据格式是yyyyMMdd'T'HHmmSS,所以获取到对应的Date,要用这种格式来解析.

3)整体NP和NC交换流程

4)Notification Actions 从iOS8开始,NP发送的iOS通知起始可以间接的告诉NC可执行哪些动作。接着,NC就可以针对指定的iOS通知,请求NP执行一个动作。 通知源特征上生成的GATT通知包含一个叫做Eventflags的数据域,NC根据这个数据域就可得知对一条iOS通知可以执行哪些操作:

EventFlagPositiveAction:积极动作(Positive Action),与iOS通知相关。 EventFlagNegativeAction:消极动作(Negative Action),与iOS通知相关。

比如iPhone来电啦,接听来电可以用EventFlagPositiveAction action来 拒绝来电的时候用EventFlagNegativeAction action来. 通过下面代码就可以实现具体挂电话or接话等操作:

public static byte[] getActionCommend(byte[] uid,int actionId){
  ByteArrayOutputStream out=new ByteArrayOutputStream();
  out.write(2);
  out.write(uid);
  out.write(actionId);
  byte [] req=out.toByteArray();
  out.reset();
  return req;
}
复制代码

ActionID Values :

ActionID Values
ActionIDPositive =0
ActionIDNegative =1
Reserved ActionID values =2-255

Ios demo

阅读数 898

没有更多推荐了,返回首页