我想知道是否有办法让 Firefox OS 应用程序广播一个事件到所有其他应用程序,并让感兴趣的应用程序 Hook 该事件并触发相应的操作。
我想到的一个用例示例:相机应用程序广播事件“拍照”,另一个应用程序 Hook 此事件并对已拍摄的新照片采取一些操作(例如,将其上传到服务器)。
最佳答案
目前 Firefox OS 中没有 Web API 来向所有打开和/或感兴趣的应用程序广播事件。
对于您的应用在相机拍摄新照片时收到通知的特定用例,最好的方法可能是为“图片”打开 DeviceStorage 并收听“更改”事件。
相关文档位于:
https://developer.mozilla.org/en-US/docs/Web/API/DeviceStorage
存在替代方案,但在功能上受到更多限制,并且在较少的版本和上下文中可用:
系统可以广播消息,但只有经过认证的应用才能收听。 https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mozSetMessageHandler
InterAppCommunication API 允许网络应用程序向一个或多个其他应用程序发送消息,但采用比一般广播更紧密耦合的方式。但是此 API 尚未标准化,并且仅适用于经过认证的应用程序。 https://bugzilla.mozilla.org/show_bug.cgi?id=876397
即将为非认证应用访问系统首选项,也许可以用来执行此操作,但这是一种完成消息传递和数据共享的 hacky 方式。 https://developer.mozilla.org/en-US/docs/Web/API/SettingsManager
注意:对于此处的每个示例,您的应用都必须处于运行状态才能正常工作。没有机制可以在特定操作或事件发生时唤醒应用程序。 Web Activities 是最接近事件特定应用程序加载的 API。 Timers API 用于非特定应用程序加载。
关于events - Firefox OS 中的广播事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27892961/