2017-02-20 132 views
0

我正在使用我的服务器发送网络通知,并使用服务人员在我的客户端中显示它们。服务人员 - 从我的服务器获取推送数据

发送通知。我使用this php library

接收他们,我用下面的代码:

self.addEventListener('push', function(event) { 
    console.log(event); 
}); 

的问题是,我不知道如何发送额外的信息,如邮件标题和正文我推事件。我尝试添加属性的有效载荷从我的服务器发送消息时,但该事件数据为空:

enter image description here

任何想法是怎么通过我的服务器发送错误/我怎样才能收到信息?

回答

0

首先使用web push来生成公钥和私钥。

然后使用公钥注册您的服务人员。

function urlB64ToUint8Array(base64String) { 
    const padding = '='.repeat((4 - base64String.length % 4) % 4); 
    const base64 = (base64String + padding) 
    .replace(/\-/g, '+') 
    .replace(/_/g, '/'); 

    const rawData = window.atob(base64); 
    const outputArray = new Uint8Array(rawData.length); 

    for (var i = 0; i < rawData.length; ++i) { 
    outputArray[i] = rawData.charCodeAt(i); 
    } 
    return outputArray; 
} 




    navigator.serviceWorker.register('/sw.js',{scope: '/'}) 
    .then(function(swReg) { 

     swRegistration = swReg; 

const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey); 
    swRegistration.pushManager.subscribe({ 
      userVisibleOnly: true, 
      applicationServerKey: applicationServerKey 
     }) 
    }) 

这应该给你一个end_point - p256dh - auth。

使用此功能可以通过网页推送发送通知。

Webpush.payload_send(
        endpoint: registration_token["endpoint"], 
        message: JSON.generate(data), 
        p256dh: registration_token["keys"]["p256dh"], 
        auth: registration_token["keys"]["auth"], 
         vapid: { 
           public_key: public_key, 
           private_key: private_key 
       })