2016-02-24 100 views
0

我可以使用PHP從服務器發送瀏覽器通知給訂閱用戶嗎?我今天看到了this tutorial,但那只是從客戶端工作。我知道有像pushcrew這樣的服務,但我想用PHP和JavaScript開發自己的服務。使用PHP從服務器端瀏覽器通知

我的實際需求是要求用戶確認,如果我可以使用此代碼發送給對方的通知,

if (Notification.permission !== "granted") 
{ 
    Notification.requestPermission(); 
} 

則顯示通知,當我在我的網站上發佈新文章。

注意:瀏覽器支持無關緊要。

回答

3

你必須在客戶端觸發這些通知,所以你需要從PHP服務器讓他們你的JavaScript:

  • 做一個ajax輪詢每x秒,例如使用jQuery的ajax functions,並顯示一條消息,如果服務器與Ratchet

返回一個

  • 推了之的WebSockets消息,例如我們b推允許您推送通知,即使用戶沒有打開站點並且受最近的Firefox 44支持也是如此。它在Chrome中得到了部分支持。詳情請查閱Mozilla Hacks blog

    function doPoll() { 
        // Get the JSON 
        $.ajax({ url: 'test.json', success: function(data){ 
         if(data.notify) { 
          // Yeah, there is a new notification! Show it to the user 
          var notification = new Notification(data.title, { 
           icon:'https://lh3.googleusercontent.com/-aCFiK4baXX4/VjmGJojsQ_I/AAAAAAAANJg/h-sLVX1M5zA/s48-Ic42/eggsmall.png', 
           body: data.desc, 
          }); 
          notification.onclick = function() { 
           window.open(data.url);  
          }; 
         } 
         // Retry after a second 
         setTimeout(doPoll,1000); 
        }, dataType: "json"}); 
    } 
    if (Notification.permission !== "granted") 
    { 
        // Request permission to send browser notifications 
        Notification.requestPermission().then(function(result) { 
         if (result === 'default') { 
          // Permission granted 
          doPoll(); 
         } 
        }); 
    } else { 
        doPoll(); 
    } 
    

    JSON服務器答案 「test.json」,如果有一個消息::

    { 
        "notify": true, 
        "title": "Hey there!", 
        "desc": "This is a new message for you", 
        "url": "http://stackoverflow.com" 
    } 
    

    JSON服務器回答在

    與輪詢

    的JavaScript jQuery的部分實施例「test.json」不顯示消息:

    { 
        "notify": false 
    } 
    
  • +1

    您的方法用於用戶在我的頁面上處於活動狀態時的自定義通知。但我的要求是使用瀏覽器通知,即使用戶在我的網站上不活躍。 –

    +0

    瀏覽器通知僅在發送通知的頁面打開(活動或在後臺)時纔有效。想象一下,如果情況並非如此,有多少垃圾郵件發送者會淹沒你的桌面? –

    +0

    你完全錯了!瀏覽器通知不同。他們首先要求您的許可,然後纔會開始顯示通知。根本沒有垃圾郵件。不同的域需要不同的權限。它不需要網頁激活。如果您的瀏覽器已打開,它將顯示通知。請參閱此鏈接 - https://developer.mozilla.org/en/docs/Web/API/notification –