我成功运行了一个发送网络推送通知的工作示例 - 订阅用户推送通知,获取端点,从订阅对象生成两个is_isogram('abolishment')
# ('abolishment', True)
is_isogram('happy')
# ('happy', False)
is_isogram('')
# ('', False)
is_isogram(1)
# TypeError: Argument should be a string
密钥 - browser
和{{1 }}。在服务器端,我生成p256dh
个密钥。
所以,有了这些,我在auth
nodejs包上调用VAPID
,并且还 - 我传递了一个有效负载。
在Firefox上 - 我收到有效负载的通知。
在Chrome和Opera上,我得到sendNotification
,还有web-push
和WebPushError: Received unexpected response code
。
用于发送内容的服务器端代码是:
UnauthorizedRegistration
我还在Error 400
文件中将MY_GCM_SENDER_ID设为// import our web-push package ..
var webPush = require('web-push');
webPush.setGCMAPIKey('MY_GCM_SENDER_ID');
// we generated the VAPID keys ..
var vapidKeys = {
"publicKey": "...",
"privateKey": "..."
};
// set our VAPID credentials ..
webPush.setVapidDetails(
'mailto:{my email}',
vapidKeys.publicKey,
vapidKeys.privateKey
);
var device_endpoint = "https://android.googleapis.com/gcm/send/...";
var device_key = "...";
var device_auth = "...";
/*
* Sending the notification ..
*/
webPush.sendNotification(
{
endpoint: device_endpoint,
keys: {
p256dh: device_key,
auth: device_auth
}
},
'My payload',
{
TTL: 86400, // 24 hours ..
}
)
.then(function() {
console.log('SUCCESS');
})
.catch(function(err) {
console.log('Unsuccessful');
console.log(err);
});
;我从gcm_sender_id
获取了它 - 创建了一个项目并从manifest.json
获得了https://console.firebase.google.com/
。我在这里阅读的说明如下:
https://firebase.google.com/docs/cloud-messaging/js/client
那么......我做错了什么?
答案 0 :(得分:2)
我设法解决了......现在我正在成功发送PUSH
有效负载:)
问题在于,当我注册PUSH
时 - 我这样做:
reg.pushManager.subscribe({
userVisibleOnly: true
})
当我这样做的时候:
reg.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: new urlBase64ToUint8Array([VAPID public key)
})
然后它工作得很好。现在我可以发送正常的PUSH或PUSH和有效载荷,没有任何问题。
更多信息:
关于所有教程,告诉你只使用userVisibleOnly
属性......这不起作用。我不知道为什么他们会推荐这个。
答案 1 :(得分:0)
您将遇到此错误的一种情况如下所述:
One will produce the wrong process
Google教程还提到了以下内容:
open DevTools (Right Click > Inspect) and go to the Application panel, click the Service Workers tab and check the Update on Reload checkbox. When this checkbox is enabled the service worker is forcibly updated every time the page reloads.
如果您想在网站中推送带有效负载的通知:
在您applicationServerKey
subscribe
如果您在applicationServerKey
subscribe
可行键生成器: Workable keys generator
可行的Google教程: Workable google tutorial
<强>结论强>
applicationServerKey
并导致错误Workable keys generator
但仍有错误Google tutorial
更新服务工作者以防止出现错误