
回复
星闪通过SSAP(星闪服务交互协议)传输数据。本节讲重点介绍SSAP数据交互逻辑,以及SSAP服务端与SSAP客户端之间的数据传输API。
手机作为SSAP服务端时,在开启广播服务之前,可以配置需要提供的服务和属性。与蓝牙类似的,每个服务都有UUID,每个服务可以对应多个属性,属性可以配置读写权限。开启广播后客户端可以扫描并连接服务端后,可以获取到服务端的服务列表以及对应的属性,对其属性进行读/写操作,即可实现数据传输。个人理解的星闪数据交互流程图如下所示,仅供参考:
接口名 | 描述 |
---|---|
createServer(): Server | 创建ssap服务端实例。 |
addService(service: Service): void | 服务端添加服务。 |
on(type: ‘connectionStateChange’, callback: Callback<ConnectionChangeState>): void | 订阅连接状态变化事件。 |
on(type: ‘propertyRead’, callback: Callback<PropertyReadRequest>): void | 订阅客户端的读请求事件。 |
sendResponse(response: ServerResponse): void | 回复客户端读/写请求。 |
notifyPropertyChanged(address: string, property: Property): Promise<void> | 通知客户端property值更新。 |
参考前两篇文章,同样讲该部分功能封装为一个方法,确保代码能正常调用框架如下所示:
下面通过源码+注释的形式介绍SSAP服务端开发步骤
接口名 | 描述 |
---|---|
createClient(address: string): Client | 创建ssap客户端实例。 |
connect(): Promise<void> | 向服务端发起连接。 |
getServices(): Promise<Array<Service>> | 获取服务端支持的服务列表。 |
readProperty(property: Property): Promise<Property> | 读取服务端property。 |
writeProperty(property: Property, writeType: PropertyWriteType): Promise<void> | 写入服务端property。 |
setPropertyNotification(property: Property, enable: boolean): Promise<void> | 启用/禁用某个property变化的通知。 |
on(type: ‘propertyChange’, callback: Callback<Property>): void | 订阅property变化事件。 |
on(type: ‘connectionStateChange’, callback: Callback<ConnectionChangeState>): void | 订阅连接状态变化事件。 |
参考前两篇文章,同样讲该部分功能封装为一个方法,确保代码能正常调用框架如下所示:
下面通过源码+注释的形式介绍SSAP客户端开发步骤