use*_*291 5 java push-notification firebase service-worker firebase-cloud-messaging
我有一个 Java Web 应用程序,需要向用户发送手动和自动通知。此通知应发送到用户的浏览器以及移动设备(iOS 和 Android)。我发现如果移动设备上没有运行本机应用程序,则无法直接向移动设备发送通知。所以我唯一的选择似乎是网络推送通知。我浏览了几篇文章,发现它很混乱。我不知道从哪里开始。
您可以不使用 FCM 直接发送它们,并且有几个可用的库,包括一个Java库。
不幸的是,iOS 目前不支持 Web Push。订阅您的服务是在设备级别而不是用户级别,因此如果我在桌面上注册,除非我在移动浏览器中再次注册,否则您无法向我的手机发送通知。
如果浏览器的实例正在运行,推送到 Android 的通知将显示,在现实世界中(无论如何,对我来说)Chrome 似乎总是在后台某处运行,所以我几乎实时地收到通知。缺点是网络推送通知直接进入通知栏,它们不会先在屏幕上弹出。
粗略的工作流程是这样的:
用户访问您的页面,您加载 Service Worker 并检查网络推送功能,如果满意您可以请求发送通知的权限。
如果用户授予权限,您将您的公钥传递给您的服务工作者为该用户创建订阅,这将返回一个端点和两个您需要向他们推送通知的密钥。
您可以在通知的有效负载中传递参数并将它们用作您显示的通知中的变量,或者您可以硬编码值,您可以根据用户是否关注您的页面来指定不同的行为,您可以添加按钮和为它们设置不同的动作,在解雇时触发事件,自定义振动模式,替换或堆叠通知,访问现有通知中的数据等。所有这些都由您的服务工作者处理,仅接收通知什么都不做。
您的 service worker 只是一个用 javascript 编写的脚本,您可以从您的页面链接它。它在用户第一次访问时由浏览器加载和安装,然后在调用时独立运行。
Service Worker 非常强大。您还可以使用它们来实现复杂的缓存规则、离线时提供内容、在不同浏览器窗口之间推送数据等。服务工作者可以产生更多服务工作者,并且当它们在浏览器的主线程之外运行时,它们非常适合卸载 CPU密集的任务,而不会延迟页面的呈现。
最后一点要注意,您的站点必须通过 SSL 提供服务才能部署 Service Worker。
1) 这在一定程度上取决于发送消息的 Java 代码的运行位置。
| 归档时间: |
|
| 查看次数: |
8429 次 |
| 最近记录: |