2016-02-24 3 views
0

Могу ли я отправлять уведомления обозревателя с сервера подписчикам с использованием PHP? Сегодня я видел this tutorial, но это работает только с клиентской стороны. Я знаю, что есть такие услуги, как pushcrew, но я хочу развить свои собственные, используя PHP и JavaScript.Уведомления браузера с сервера с помощью PHP

Моего фактическое требование просит пользователь подтвердить, если я могу послать им уведомление с помощью этого кода,

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

затем показать уведомления, когда я публикую новую статью на моем сайте.

NB: Поддержка браузера не имеет значения.

ответ

3

Вы должны инициировать эти уведомления на стороне клиента, так что вам нужно, чтобы получить их с сервера PHP на ваш JavaScript:

  • сделат АЯКС ПОЛЛИНГ каждые х секунд, например, с JQuery ajax functions и показать сообщение, если сервер возвратил один
  • толчок сообщение по WebSockets, например, с Ratchet

Мы b Push позволяет вам получать уведомления, даже если у пользователя не было открытого сайта и поддерживается последним Firefox 44. Он частично поддерживается в Chrome. Для получения дополнительной информации посетите Mozilla Hacks blog.

Пример с избирательного

JavaScript JQuery части:

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 сервер ответ в "test.json", чтобы не показывать сообщение:

{ 
    "notify": false 
} 
+1

Ваш метод предназначен для пользовательских уведомлений, когда пользователь активен на моей странице. Но мое требование - использовать уведомления браузера, даже если пользователь неактивен на моем веб-сайте. –

+0

Уведомления обозревателя работают только тогда, когда страница, отправляющая уведомления, открыта (активна или находится в фоновом режиме). Представьте, сколько спамеров наполнило бы ваш рабочий стол, если бы это было не так? –

+0

Ты совершенно неправ! Уведомления обозревателя разные. Сначала они спрашивают ваше разрешение, а затем только начинают показывать уведомления. Никакого спама. Для разных доменов требуются разные разрешения. Он не требует активной веб-страницы. Если ваш браузер открыт, он будет показывать уведомления. См. Эту ссылку - https://developer.mozilla.org/en/docs/Web/API/notification –

Смежные вопросы