AllJoyn核心应用教程【第六章】:Base Services服务之Notification

来源:互联网 发布:c语言数组初值 编辑:程序博客网 时间:2024/06/05 22:50

AllJoyn的Notification服务框架为设备提供了一种通用的机制,使设备或应用能够发送人类可阅读的文本,从而显示或转换为其他格式,如将文本转换为音频等。Notification服务可在整个AllJoyn网络中传播,可被全部设备接收并根据某个特定的TLL维持一段时间,维持的时间由生成Notification的生产者所决定。除了文本,其他元数据如音频、图像、控制面板或其他自定义的属性都可以通过Notification进行发送;接收方可根据所获得的信息自行决定如何处理或渲染所获得的属性。此外,消费者设备可以全局的忽视掉所有的Notification信息。

概念与术语

生产者与消费者

在AllJoyn网络中,存在两种角色,分别是:
生产者:发送广播一方
消费者:接收广播一方

信息类型

Notification可大致被分为如下三种类型:消息、警告与紧急事件。在大多数情况下,网络中主要传播的是消息类型。在合适的时候,警告被用来在Notification中取得关注。同样的,紧急事件需谨慎使用,适用于极端情况下需要特殊关注时使用。

存活时间(TTL)

每个信息都以某个特定的TTL时间进行发送,该时间以毫秒为基本单位。消息会一直保存在网络中,直到TTL最终到期。如果消费者在TTL时间内参与到网络中,那么它将会接收到该信息。

此外,相同的信息类型在网络中会对彼此进行覆盖。因此,在任何时候,为了保证生产者的合理信息,三种信息类型不能重复出现。举例来说,如果一个生产者发送一个消息信号类型,时间为20秒,但是在此之前已经有一个100秒的TTL信息被发送,那么新的信息将会被覆盖旧的消息。此时参与到网络中的消费者将只能接收到新的信息,而无法获取之前的旧信息,即使新的信息仍然没有过期。

多语言支持

与其他AllJoyn服务相同,Notification服务支持多种语言。生产者可以以所有支持语言的字符进行发送。消费者也可以使用任意需要的最合适的支持语言。

忽略机制

在下列三种情况下,消费者可以选择忽略Notification
1. 消费者可以通过将Notification从用户接口中移除,在本地中忽略Notification,从而不必再监视Notification信息。这种方法对其他消费者没有任何影响,其他消费者仍然可以检测到所有的Notification信息。
2. 消费者或生产者,可以在网络中发送一个信号,让所有的消费者忽略。其他的消费者一旦受到该信号,将从视图中移除Notification。
3. 消费者可以通知生产者在接下来的Notification中停止广播,新的消费者将不再接收到任何Notification。

音频与图像

Notification允许对属性进行设置。这使得Notification不仅仅可以发送文本。最通用的属性包括音频与图像。属性即可以被指定为URL链接或AllJoyn对象路径。如果提供了URL链接,那么消费者可以有选择性的通过URL链接来获取音频或图像,并在本地对其进行相应的渲染。

控制面板对象路径

另外一种特殊的属性是控制面板对象路径。生产者通过修改这一属性来为消费者提供更多的指引。当消费者收到该Notification时,如果其支持控制面板服务,它将会在对象路径中获取控制面板并渲染给使用者进行使用。通常情况下,这一方式允许消费者根据某种Notification实现某种操作。
举例来说,如果一个微波炉一直保持在开的状态。它除了需要发送一个Notification提醒消费者之外,还将包括一个控制面板提供给用户,从而选择是否关闭微波炉

自定义属性

Notification可以包含任意数字的自定义键值对属性。消费者可以有选择性的使用这些信息从为以富文本形式的Notification进行显示。自定义属性是应用专属的,因此消费者需要有生产者的具体信息,才能够有效的使用自定义属性。

举例来说,如果某收音机在每首歌播放时发送一个Notification。该信息包含了艺术家与标题,并以文本形式展示,用户自定义属性用于展示专辑作品的URL链接。通常情况下消费者将收到Notification并且仅仅显示Notification文本,也就是说,只会显示艺术家与标题。但是消费者如果对生产者的具体信息十分了解,并且获得了专辑作品的URL,那么将会将其与文本进行共同显示,从而提供更丰富的自定义信息。

0 0
原创粉丝点击