服务人员 - 从我的服务器获取推送数据
问题描述:
我正在使用我的服务器发送网络通知,并使用服务人员在我的客户端中显示它们。服务人员 - 从我的服务器获取推送数据
发送通知。我使用this php library
接收他们,我用下面的代码:
self.addEventListener('push', function(event) {
console.log(event);
});
的问题是,我不知道如何发送额外的信息,如邮件标题和正文我推事件。我尝试添加属性的有效载荷从我的服务器发送消息时,但该事件数据为空:
任何想法是怎么通过我的服务器发送错误/我怎样才能收到信息?
答
首先使用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
})