PHP 谷歌推送通知

Posted

技术标签:

【中文标题】PHP 谷歌推送通知【英文标题】:PHP Google Push Notifications 【发布时间】:2018-07-19 15:39:52 【问题描述】:

我一直在研究如何在 php 中使用((谷歌推送通知)),但是那里没有很多工作示例/文档...

我正在尝试通过 HTTP 使其在未向外部开放的内部网络上运行。

我能够从我们面向外部的域通过 HTTPS 运行它,但内部尝试在 Chrome 控制台中告诉我 "the API may no longer be used from insecure origins",我发现这意味着它需要 HTTPS。

有没有人知道可能的解决方法,欺骗 HTTPS,或允许它通过 HTTP 继续?我知道谷歌将这一点作为预防措施,以防范有恶意的人,但这里不是这种情况,因为它是供私人使用的。

我的 html 只是一个带有 onclick="notifyMe()" 事件的按钮。

请求权限的脚本和通知函数:

<script>
// request permission on page load
document.addEventListener('DOMContentLoaded', function () 
  if (!Notification) 
    alert('Desktop notifications not available in your browser. Try Chromium.'); 
    return;
  

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

function notifyMe() 
  if (Notification.permission !== "granted")
    Notification.requestPermission();
  else 
    var notification = new Notification('Notification title', 
      icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
      body: "Hey there! You've been notified!",
    );

    notification.onclick = function () 
      window.open("http://example.com");      
    ;

  


</script>

带有通知选项和权限的 JS 文件:

'use strict';

var button = document.querySelector('button');
var input = document.querySelector('input');

var notify = function() 
  var options = 
    body: input.value,
    icon: 'icon.png',
    tag: 'foo',
    type: 'basic'
  ;
  var n = new Notification('Greetings!', options);
  n.onclick = function() 
    console.log('Clicked.');
  ;
  n.onclose = function() 
    console.log('Closed.');
  ;
  n.onshow = function() 
    console.log('Shown.');
  ;
;

button.onclick = function() 
  if (!('Notification' in window)) 
    alert('This browser does not support desktop notification');
   else if (Notification.permission === 'granted') 
    notify();
   else if (Notification.permission !== 'denied') 
    Notification.requestPermission(function(permission) 
      if (!('permission' in Notification)) 
        Notification.permission = permission;
      
      if (permission === 'granted') 
        notify();
      
    );
  
;

【问题讨论】:

【参考方案1】:

在对此进行广泛的研究和测试后,我发现即使在内部网络上,也无法在没有 HTTPS 连接的情况下使用 Google Chrome 通知。

我选择设置 SSL 证书,这解决了我的问题。

【讨论】:

以上是关于PHP 谷歌推送通知的主要内容,如果未能解决你的问题,请参考以下文章

通过谷歌推送通知接收来自额外密钥的旧值

Web 推送通知:如何使用 Web 推送 PHP 库?

在php中发送推送通知时注册无效

使用 php 为 android 推送通知

停止谷歌推送通知,回复“找不到项目的频道”

谷歌推送通知未到达应用程序