2017-02-20 149 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 
       })