当前位置: 首页 > 知识库问答 >
问题:

使用Javascript向Google Chrome推送通知发送数据/有效负载

金令
2023-03-14

我正在工作的谷歌Chrome推送通知,我正在尝试发送有效负载到谷歌Chrome工作者,但我不知道我如何接收这个有效负载。

我有一个API可以在数据库中创建和保存通知,我需要通过https://android.googleapis.com/gcm/send发送值,并在worker.js上接收

这是我的工作人员。JS

    self.addEventListener('push', function(event) {
      var title = 'Yay a message.';
      var body = 'We have received a push message.';
      var icon = '/images/icon-192x192.png';
      var tag = 'simple-push-demo-notification-tag';

      event.waitUntil(
        self.registration.showNotification(title, {
          body: body,
          icon: icon,
          tag: tag
        })
      );
    });

我就是这么叫GCM的

curl --header "Authorization: key=AIzaSyDQjYDxeS9MM0LcJm3oR6B7MU7Ad2x2Vqc" --header  "Content-Type: application/json" https://android.googleapis.com/gcm/send -d "{ \"data\":{\"foo\":\"bar\"}, \"registration_ids\":[\"APA91bGqJpCmyCnSHLjY6STaBQEumz3eFY9r-2CHTtbsUMzBttq0crU3nEXzzU9TxNpsYeFmjA27urSaszKtA0WWC3yez1hhneLjbwJqlRdc_Yj1EiqLHluVwHB6V4FNdXdKb_gc_-7rbkYkypI3MtHpEaJbWsj6M5Pgs4nKqQ2R-WNho82mnRU\"]}"

我试图获取event.data,但这是未定义的。

有人有什么想法或建议吗?

共有1个答案

太叔鸿博
2023-03-14

要检索该数据,需要将“event.data.text()”解析为一个JSON对象。我猜自从你试着让它起作用后,有些东西被更新了,但它现在起作用了。倒霉!

然而,由于我是在自己寻找解决方案的时候写到这篇文章的,其他人可能会喜欢一个可行的答案。这里是:

// Push message event handler
self.addEventListener('push', function(event) {

  // If true, the event holds data
  if(event.data){

    // Need to parse to JSON format
    // - Consider event.data.text() the "stringify()"
    //   version of the data
    var payload = JSON.parse(event.data.text());
    // For those of you who love logging
    console.log(payload); 

    var title = payload.data.title;
    var body  = payload.data.body;
    var icon  = './assets/icons/icon.ico'
    var tag   = 'notification-tag';

    // Wait until payload is fetched
    event.waitUntil(
      self.registration.showNotification(title, {
        body: body,
        icon: icon,
        tag: tag,
        data: {} // Keeping this here in case I need it later
      })
    );

  } else {
    console.log("Event does not have data...");
  }

}); // End push listener

// Notification Click event
self.addEventListener('notificationclick', function(event) {
  console.log("Notification Clicked");
}); // End click listener

就我个人而言,我将创建一个“通用”通知,以防我的数据不正常,并且还将使用try/catch。我建议也这么做。

 类似资料:
  • 问题内容: 我只想知道如何确定在无提示推送中要执行的操作: 这是我发送给客户的: 现在的问题是,当我添加以确定静默推送是为了让“订单更新”显示警报通知时。 问题答案: 有一些选择!让我们花点时间了解所有不同的有效负载及其用法。 简单有效载荷 显示在通知中心:是 唤醒应用以执行后台任务:否 带有自定义通知声音的有效负载 显示在通知中心:是 唤醒应用以执行后台任务:否 :在您的应用程序包中添加自定义通

  • 我正在尝试通过AWS SNS向GCM发送移动推送通知。根据最新的GCM 3.0留档,其中可能包括“通知”有效负载或“数据”有效负载(或两者兼而有之)。如果您发送通知有效负载,那么GCM将负责为您在最终用户设备上显示通知。 使用Amazon SNS控制台,我尝试发送仅通知有效负载,但遇到以下错误: 无效参数:消息原因:协议GCM的通知无效:json消息中需要数据密钥(服务:AmazonSNS状态码:

  • 如何使用Firebase向我的应用程序的所有注册用户发送推送通知?我在纪录片中搜索了api,但没有找到任何有用的东西。

  • 这是我问的新问题,因为我还没有得到任何答案。 我正在使用亚马逊SNS Push向我注册的设备发送推送,一切都很好,我可以在我的应用程序上注册设备,可以发送推送等。我面临的问题是,当我通过推送打开我的应用程序时,我想打开一个特定的页面。我想发送一些额外的有效载荷参数,但我不能这样做。 我试过这个链接:-http://docs.aws.amazon.com/sns/latest/api/API_Pub

  • 当我需要使用Firebase向特定设备发送通知时,这就是JSON结构。那么,我应该如何修改它以向所有设备或两个选定设备发送相同的通知呢? android中使用Firebase向所有设备发送推送通知的JSON结构是什么?

  • 如何处理app在前台和后台时的推送通知?我正在得到下面的有效载荷数据。 func application(application:UIApplication,didReceiveRemoteNotification UserInfo:[NSObject:AnyObject],fetchCompletionHandler CompletionHandler:(UIBackgroundFetchRes