GCM webpush在背景中

时间:2015-08-31 20:18:13

标签: chrome-gcm web-push push-api

我实施了网络推送通知。获取错误的步骤:

  1. 打开网站
  2. 订阅推送通知
  3. 通过gcm发送许多推送 - 一切正常
  4. 关闭带网站的标签
  5. 发送推送并接收“双推” - 第一个是好的,第二个是“此网站已在后台更新”
  6. 重新开启网站
  7. 发送推送 - 一切正常
  8. 我知道当服务工作者收到推送并且没有显示通知时会发生这种情况。但我看到正常的通知,为什么我也看到其他奇怪的通知?我可以摆脱这种行为吗?

1 个答案:

答案 0 :(得分:5)

self.addEventListener('push', function(event) {
  event.waitUntil(
    self.registration.pushManager.getSubscription()
      .then(function(subscription) {
        fetch('url')
          .then(function(response) {
            self.registration.showNotification('title', {});
          });
      });
  );
}

就我而言:

self.addEventListener('push', function(event) {
  event.waitUntil(
    self.registration.pushManager.getSubscription()
      .then(function(subscription) {
        return fetch('url')
          .then(function(response) {
            return self.registration.showNotification('title', {});
          });
      });
  );
}

应该是:

<?php

try {
    $dbh = new PDO("mysql:host=localhost;dbname=vbl", "root", "");
        } catch (PDOException $e) {
            echo $e->getMessage();
            exit();
        }

$query = "SELECT * FROM `users` WHERE LOWER(`username`) = :username";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':username', strtolower($_POST['username']));
$stmt->execute();
if ($stmt->rowCount() == 1) {
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    require('blowfish.class.php');
    $bcrypt = new Bcrypt(4);
    if ($bcrypt->verify($_POST['password'], $row['password'])) {
        header("location: cpanel.php");

        } else { 
            header("location: login.php");
    }

}

?>