标签: push-api

来自iframe的服务工作者用于网络的Chrome GCM通知

我想订阅/取消订阅服务工作人员,以通过iframe在网络上获取Chrome GCM通知.

我有一个工作原型,可以直接在浏览器上打开它,也可以从window.open javascript弹出.

但是从iframe加载它时会出现权限被拒绝错误.

这里可能有什么问题,是的,我的来源是http和iframe网址是https.为什么iframe无法订阅通知.

iframe chrome-gcm service-worker web-push push-api

5
推荐指数
1
解决办法
1432
查看次数

Chrome推送通知端点+用户标识

我计划整合针对Chrome的推送通知(推送API和通知API).

成功订阅后,Chrome服务器会向客户端发送一些特殊令牌("端点"),您可以使用该令牌识别客户端并发送任何推送消息.

来自doc:

端点应该保存在服务器上,供每个用户使用,因为您需要它们以后发送推送消息.

我有几个问题:

  1. 如何在服务器端管理"端点"?在您通过AJAX成功订阅服务器并保存到数据库后,您会发送此"端点"吗?或者您将其保存到cookie中,然后在登录/注册请求后将其保存在服务器上.
  2. 我想知道,你如何将"端点"与真实用户联系起来?用户可以打开您的站点,单击"允许"以显示推送通知,但他没有会话cookie,因此您无法在该时间用真实用户识别此"端点".
  3. 这个"端点"有一些TTL吗?

push push-notification google-cloud-messaging web-push push-api

5
推荐指数
1
解决办法
1549
查看次数

如何为推送通知添加分析

我正在开发渐进式网络应用程序,我想为推送通知实施分析.

如何为推送通知添加分析,以便我能够跟踪和记录有多少人点击通知以及有多少人关闭该通知而不点击它.

push-notification service-worker web-push push-api progressive-web-apps

5
推荐指数
1
解决办法
1939
查看次数

Web Push API-将订阅存储在后端

我已经在以下Google教程的帮助下实现了Web Push API:https//developers.google.com/web/fundamentals/getting-started/codelabs/push-notifications/

本教程包括一种方法,该方法可用于将订阅发送到后端服务器:

function updateSubscriptionOnServer(subscription) {
  // TODO: Send subscription to application server
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想将订阅和用户标识符一起存储,因此我可以选择要发送通知的用户。现在我想知道我必须将订阅的哪一部分存储在数据库中。我的订阅对象如下所示:

{"endpoint":"https://fcm.googleapis.com/fcm/send/...","keys":{"p256dh":"...","auth":"..."}}
Run Code Online (Sandbox Code Playgroud)

我是否应该仅创建包含列(Id | User_Id | Subscription)的表“ Subscription”,其中包含整个JSON订阅?最佳做法是什么?JSON的有效性是否不受限制?如果取消订阅,我可以使用哪个字段来识别订阅?

push-notification push-api

5
推荐指数
1
解决办法
1450
查看次数

如何检查推送端点是否仍然有效?

我已经为我的网站成功实现了HTML5推送通知,用于新闻更新和用户事件。如果某个端点不再有效(无论出于何种原因,但通常是由于用户在其浏览器中撤消了权限),则当我尝试发送通知时,我会从推送服务器获得404或410状态。然后,从记录中删除该端点。

但是我想要更加主动一些,并检查端点是否有效,因此我的已订阅用户统计信息更为真实,并且仅在通知发送失败(可能需要几天或几周)时才更新。

我曾想发送无效的推送消息(例如,使用错误的VAPID密钥),但我无法保证服务器会在有效负载有效之前检查端点的有效性,因此即使可行,它也可能会中断在任何时候。

有什么更优雅的方式可以做到这一点吗?

web-push push-api

5
推荐指数
0
解决办法
564
查看次数

如何使用单个Javascript标记安装服务工作者和清单?

我已经为网站构建了一项服务,可以轻松地将推送通知集成到他们的网站中,但是当前的Chrome实施还需要他们设置清单和服务工作者.

有没有办法只用一行Javascript来设置服务工作者和清单?

javascript google-chrome service-worker web-push push-api

4
推荐指数
1
解决办法
1939
查看次数

使用Web推送通知从GCM获取自定义消息

我在Chrome上使用网络推送通知,效果很好.但现在我想在我的通知中发送自定义消息.我可以让我的服务工作者呼叫我的网站获取内容,如https://simple-push-demo.appspot.com/所述,如果我希望每个收件人都能看到相同的消息,那么这很好.

有没有办法让收件人registration_idmessage_idGCM返回?如果我可以获得其中任何一个并将它们包含在服务的回调中,我可以自定义响应.

此外,关于何时我们可以在GCM调用中包含有效负载的任何信息?

web-push push-api progressive-web-apps

4
推荐指数
1
解决办法
403
查看次数

getSubscription返回空订阅

我是服务工作者和GAE的新手,我能够注册服务工作者,但无法订阅PushManager,但得到的订阅为null错误。查找以下代码以供参考。

serviceWorkerRegistration.pushManager.getSubscription()  
  .then(function(subscription) {  
    var pushButton = document.querySelector('.js-push-button');  
    pushButton.disabled = false;

    if (!subscription) {  
      console.log('subscription error '); 
      return;  
    }
    console.log('subscriptioned ');

    // Keep your server in sync with the latest subscriptionId
    sendSubscriptionToServer(subscription);

    // Set your UI to show they have subscribed for  
    // push messages  
    pushButton.textContent = 'Disable Push Messages';  
    isPushEnabled = true;  
  })  
  .catch(function(err) {  
    console.warn('Error during getSubscription()', err);  
  });
});
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,那么内部的“订阅”值为“ null”,因此控制进入if块并简单地返回。

javascript service-worker push-api

4
推荐指数
1
解决办法
2705
查看次数

真的有必要在每次页面加载时更新订阅吗?

我目前正在开发一个网络应用程序,该应用程序将允许用户订阅推送通知。我们将把订阅存储在根据用户 ID 映射的数据库表中,当需要发送通知时,我们将查找用户的订阅并发送通知。

我一直在遵循本指南: https://developers.google.com/web/fundamentals/codelabs/push-notifications/

一切都很顺利,但有些事情就是感觉不太“正确”。

在每次页面加载时,服务工作线程都会被注册,然后检查它们是否已经订阅,然后即使它们是,它也会调用包含updateSubscriptionOnServer()以下注释的内容:

// TODO: Send subscription to application server
Run Code Online (Sandbox Code Playgroud)

这实际上意味着每个页面加载都将尝试将相同的订阅写回数据库。显然我们会在应用程序中处理这个问题,但这似乎并不理想。

对于 Web Push API,这是预期的方法吗?

非常感谢

push-notification web-push push-api

4
推荐指数
1
解决办法
1548
查看次数

有关保持 Service Worker 推送订阅同步的问题

我读过推送订阅可能会导致浏览器和推送服务之间不同步。

我见过两种补救措施,两者看起来都是非标准的:

  1. ServiceWorkerGlobalScope.onpushsubscriptionchange
  2. GCM 发送响应,在这里提到在这里详细说明
    • 可以理解的不标准

我认为任何应用程序都应该处理这两点,在这些点上订阅可以被识别为不同步(以及任何/全部)。

问题:

  1. 一般来说,应用程序是否总是只有两个区域才能意识到订阅不同步的情况?(1.服务工作者事件2.推送服务响应)似乎合理,寻求确认
  2. ServiceWorkerGlobalScope.onpushsubscriptionchange 事件(或类似事件)是否会成为权威标准
  3. 代替服务工作线程事件标准,为什么不只保留预期的订阅端点(在客户端状态),并且每当您查询 PushManager 的订阅时,检查它是否不同步(与预期不同)?

firefox google-chrome service-worker web-push push-api

3
推荐指数
1
解决办法
608
查看次数