web-push - OneSignal网站推流

标签 web-push onesignal

我正在为我的网站实现 OneSignal 网站推送通知。现在我只想为注册用户启用推送通知。我原以为用户点击“允许”或“阻止”后会有一些回调方法,但没有。我发现我必须使用 OneSignal.isPushNotificationsEnabled()OneSignal.push(["getIdsAvailablegetIdsAvailable",..]),但我不确定一切如何应该会走到一起。

我认为我应该做的是每次注册用户在主页时执行如下操作:

if isPushNotificationsEnabled
   OneSignal.push(["getIdsAvailablegetIdsAvailable",..])`
   send_user_id_to_server_where_it_is_saved_in_the_database
else
   OneSignal.push(["registerForPushNotifications"..])
end

令我困扰的一件事是,如果执行此代码并且用户单击“允许”,它将不会触发任何代码,并且用户实际上已允许推送通知的通知永远不会到达我的服务器。我必须等待用户回来或刷新页面。这是它应该如何工作的还是我错过了什么?

最佳答案

与 OneSignal 支持人员交谈后,他们提供了一种新方法

OneSignal.on('subscriptionChange', function (isSubscribed) {..}]);

当用户的订阅状态发生变化时将会触发。请注意,完整且有效的订阅基于以下几件事:通知权限、是否有后台工作人员主动获取通知、存储用户 ID 和注册 token 信息的 Web 数据库是否完好、用户是否手动选择退出与否。

文档中没有一个单独的方法,该方法仅用于检查用户权限:

OneSignal.push(["getNotificationPermission", function(permissions) {..}]); 

权限参数可以是“默认”、“授予”和“拒绝”。

关于web-push - OneSignal网站推流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998906/

相关文章:

html - 在没有完全 https 站点的情况下,是否可以在 html5 中推送通知?

angular - 在 ionic 2 项目上添加 OneSignal-Cordova-SDK 时失败

php - Web Push php 库 : Throws internal error

javascript - OneSignal 使用 web-push-sdk 通过网页订阅用户

c# - 如何在使用 OneSignal 发送推送通知时发送一些额外的数据?

android - OneSignal 为每个应用程序安装创建多个用户记录

swift - OneSignal 库 iOS - 链接器命令失败,退出代码为 1

android - 如何在应用程序关闭时获取 OneSignal 推送通知?

service-worker - VAPID 公钥是否与 applicationServerKey 客户端相同?

javascript - Firebase 消息传递服务工作人员点击处理程序不起作用