如何在不请求通知权限的情况下获取 Firebase 云消息传递的注册令牌?
Posted
技术标签:
【中文标题】如何在不请求通知权限的情况下获取 Firebase 云消息传递的注册令牌?【英文标题】:How to get a registration token for Firebase Cloud Messaging without requesting permission for notifications? 【发布时间】:2017-09-20 12:23:59 【问题描述】:我的最终目标是让 Web 客户端订阅 Firebase 云消息传递中的主题,以接收按键分区的简单数据推送事件。通过这个问题,这似乎是可能的,但前提是您可以将客户端的注册密钥发送到您使用 FCM Admin API 控制的应用服务器:How to subscribe to topics with web browser using Firebase Cloud Messaging
此外,通过https://firebase.google.com/docs/cloud-messaging/js/client,似乎需要向用户请求权限才能显示桌面通知,才能访问 Firebase 消息传递的注册令牌。
有什么方法可以告诉 Firebase 不,我绝对不想要桌面通知,事实上请不要显示它们,我只想使用 data
消息而不是 notification
?然后,获取注册令牌?或者,是否有其他方式可以从 Web 客户端订阅主题?
【问题讨论】:
我同意这个问题。如果我不想触发官方浏览器通知,而只想触发 javascript 事件,这不是安全问题。 Firebase 数据库无需特殊用户权限即可运行。 嘿,你知道这是否可行吗?我正在将 firebase 视为 Web 套接字的替代品(为了向查看网站的用户发送简单的推送消息,因为我根本不关心桌面通知) 【参考方案1】:目前没有其他方法可以获取注册令牌,也没有其他方法可以为 Web 客户端订阅主题。
你已经知道了,但不妨提一下。出于安全目的(防止用户不想要的通知),请求权限是必须的,并且为了为网络客户端订阅主题,您首先必须获得一个令牌(这不会' t 生成,除非用户授予权限)。
【讨论】:
【参考方案2】:您似乎在寻找Pusher
用于通信的用户通道。无令牌工作,支持双向联系。
示例代码
后端
pusher->trigger('my-channel', 'my-event', [
'message' => 'hello world'
]);
前端
var channel = pusher.subscribe('my-channel');
channel.bind('my-event', function(data)
alert('Received my-event with message: ' + data.message);
);
【讨论】:
以上是关于如何在不请求通知权限的情况下获取 Firebase 云消息传递的注册令牌?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不请求的情况下在firebase-auth中首次加载时获取currentUser
如何在不使用 Firebase 控制台的情况下向 iOS 设备发送 Firebase 云消息通知?
如何在不迁移到 Firebase 的情况下获取 google-services.json
我开发了提醒应用程序,因此如何在不使用 firebase 的情况下向用户发送本地通知
如何在不使用 Firebase Cloud Messaging 控制台的情况下向 Flutter/Firebase Cloud Messaging 上的特定设备发送通知 [重复]