动态桌面推送通知 - PHP

时间:2016-09-06 13:48:20

标签: javascript php jquery push-notification html5-notifications

对于发送桌面通知,我使用此代码。 (来自https://developer.mozilla.org/en/docs/Web/API/notification

<button onclick="notifyMe()">Notify me!</button>

function notifyMe() {
  // Let's check if the browser supports notifications
  if (!("Notification" in window)) {
    alert("This browser does not support desktop notification");
  }

  // Let's check whether notification permissions have already been granted
  else if (Notification.permission === "granted") {
    // If it's okay let's create a notification
    var notification = new Notification("Hi there!");
  }

  // Otherwise, we need to ask the user for permission
  else if (Notification.permission !== 'denied') {
    Notification.requestPermission(function (permission) {
      // If the user accepts, let's create a notification
      if (permission === "granted") {
        var notification = new Notification("Hi there!");
      }
    });
  }

  // At last, if the user has denied notifications, and you 
  // want to be respectful there is no need to bother them any more.
}

当我按下按钮时,这将在同一页面上工作,但如果我想动态管理这些通知,该怎么办? 即如果我从后端(管理员)推送通知,它应该向前端显示消息(允许通知的用户)

1 个答案:

答案 0 :(得分:2)

请按照以下步骤操作

  1. 在用户端有一个{notifyMe(msg)}函数。
    在Javascript中定义一个函数就像问题notifyMe();
  2. 在特定时间间隔内发送ajax呼叫以检查当前登录用户的管理员状态
    以特定间隔向服务器发送ajax调用。在setInterval函数内调用Ajax并发送每20Sec的请求。
  3. 如果使用消息或标记设置管理员状态,请将消息传递给定义的函数{notifyMe(msg)}。用户将被自动注意。
    在服务器端脚本中,检查管理员是否为用户启用了通知(例如用户标识10)。如果在服务器端设置为启用(用户ID 10),则在ajax返回中调用您的函数 notifyMe()。一旦确定停止通知,请在javascript中清除间隔。
  4. 您可以从会话中获取服务器端脚本中的用户ID,也可以从Ajax调用中获取参数。因此,根据用户ID,您将执行是否调用Ajax和 notifyMe()