Notification

AllJoyn™ Notification Service 架构为设备/应用发送的可读文本提供了一套通用的显示或渲染机制。通知被广播在 AllJoyn 网络中,所有设备/应用都能够接收,它的持续时间根据通知的发出者设定的 TTL 决定。除了文本信息,也可以发送其他类型的数据,如音频、图像、控制面板对象或其他自定义属性;由接收者决定处理和渲染自定义属性的最佳方式。另外,接受者可以全局拒收通知。

概念和术语

生产者和消费者

两个角色: 生产者。它发送通知。 消费者。它接收通知。

消息类型

通知可以属于以下三种类型:信息、警告、紧急。通常情况下,使用信息的方式发送。当情况合适时,可以用警告使通知获得更多关注。同样,在紧急情况发生时,可以谨慎地使用紧急方式。

存活时间(TTL)

发送的每一条信息都会伴随一个特定的 Time-to-live (TTL),以毫秒为单位。消息会保持在网络中直到它的 TTL 超时。如果消费者在 TTL 之内加入了网络,它将能够收到消息。

此外,使用相同类型的消息将会被覆盖。所以,在任意时间,生产者发送的同类型消息至多有一个生效。举例说明,如果生产者发送了一条信息类型的消息,并且在 20 秒之前它发送了一条 100 秒 TTL 的信息类型的程序。那么新的消息将会覆盖之前的消息。消费者只能接收到新的消息,尽管旧消息的 TTl 仍没有过期。

多语言支持

如所有 AllJoyn 服务一样,通知服务支持多语言。生产者用所有支持的语言发送通知字符串。消费者可以根据需求选择最合适的语言。

驳回

有以下三种方式驳回通知:

  1. 消费者可以将通知移出它的用户接口,那么它的用户就不会收到通知,就达到了拒绝通知的目的。当这个通知可以被网络上的其它消费者收到时,那么此方法不适用。

  2. 消费者或生产者,能够通过向所有网络中的消费者发送一个信息以拒绝通知。在收到此信号后,消费者预计将移除该通知。

  3. 消费者能够通知生产者停止广播通知。随后,新消费者将不会收到这个通知。

声音和图像

通知允许指定类型。这为通知提供了超越文本的额外维度。最常见的类型是声音和图像。它们可以被指定为特定 URL 或者作为一个 AllJoyn 对象路径。如果提供了 URL,消费者可以选择通过指定的 URL 中提取的音频或图像并酌情在本地渲染。

控制面板对象路径

控制面板对象路径是一个特殊的属性。生产者填写这个属性,为消费者提供了额外的指示。当消费者收到此通知,如果它支持控制面板服务,就可以从对象路径得到控制面板并提供给用户使用。通常这样做是为了使消费者能够执行与通知关联的操作。

举例说明,如果一个烤箱被留在某地,并且是打开的状态。它可以发送一个带有控制面板的通知,为用户提供一个可以将它关闭的选项。

定制属性

通知能够包含任意数量的定制键/值对属性。消费者能够选择性地利用这些信息获得更多的通知。定制属性是针对应用程序的,所以消费者需要有关于生产者的特定信息,以适当地使用定制属性。

举例说明,试想一个收音机每播放一个新乐曲时发送一个通知。这个通知包含了通知文本形式的艺术家和曲名,以及一份专辑封面 URL 的定制属性。普通消费者在收到该通知后只会显示通知文本形式的部分,也就是艺术家和曲名。但是那些更加关注生产者的消费者,也能够从通知中获得专辑封面 URL 并显示出来以提供更丰富的定制通知。

运行方式

从内部来看,通知通过 AllJoyn Sessionless Signal 信号进行发送。Sessionless Signal 满足了发送和接收通知的一切需要:

Sessionless signal 包含完全版本的通知,包含所有支持的语言和所有的元数据。更多详细信息和信号的具体内容请参阅 Notification Interface Definition

拒绝通知也由 sessionless signal 处理。

综上所述,以下是它工作的方法:

更多