我想知道Firefox OS应用程序是否有办法向所有其他应用程序广播事件,感兴趣的应用程序挂钩该事件并触发相应的操作。
我想到的一个用例示例:相机应用程序广播事件"拍摄的照片"和另一个应用程序挂钩此事件并对已拍摄的新图片采取一些操作(例如,将其上传到服务器)。
答案 0 :(得分:2)
Firefox OS目前不支持向所有开放和/或感兴趣的应用广播事件。
对于您在相机拍摄新照片时通知应用的特定用例,最好的方法可能是打开DeviceStorage用于"图片"并听取"改变"事件
此文档位于:
https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage
存在替代方案但在功能上更受限制,并且在更少的版本和上下文中可用:
系统可以广播消息,但只有经过认证的应用才能收听。 https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mozSetMessageHandler
InterAppCommunication API允许Web应用程序向一个或多个其他应用程序发送消息,但其方式与普通广播相比更紧密。但是,此API尚未标准化,仅适用于经过认证的应用程序。 https://bugzilla.mozilla.org/show_bug.cgi?id=876397
很快就会对未经认证的应用程序访问系统首选项,也许可以用来执行此操作,但这是实现消息传递和数据共享的一种黑客方式。 https://developer.mozilla.org/en-US/docs/Web/API/SettingsManager
注意:对于此处的每个示例,您的应用都必须运行才能运行。当特定动作或事件发生时,没有用于唤醒应用程序的机制。 Web Activities是用于特定于事件的应用程序加载的最接近的API。 Timers API适用于非特定应用加载。
答案 1 :(得分:0)
从这篇文章[1]:
应用程序作者可以构建一个可以处理一个或多个活动的应用程序。这意味着应用程序可以被另一个应用程序调用,以执行活动定义的某些特定操作。例如,让我们假装我们想要建立一个照片管理器。它可以被另一个应用程序用来挑选照片。作为活动处理程序,我们的应用程序将成为其他应用程序工作流程的一部分。
[1] https://developer.mozilla.org/en-US/docs/Web/API/Web_Activities