-4
webpush documentation显示了在控制器工作...如何将webpush添加到模型?
post "/push" do
Webpush.payload_send(
message: params[:message],
endpoint: params[:subscription][:endpoint],
p256dh: params[:subscription][:keys][:p256dh],
auth: params[:subscription][:keys][:auth],
vapid: {
subject: "mailto:[email protected]",
public_key: ENV['VAPID_PUBLIC_KEY'],
private_key: ENV['VAPID_PRIVATE_KEY']
}
)
end
,但我试图重构为一个模式,这样我就可以开始运行rake任务challenge.send_web_push(title: 'Here is a title', body: 'Here is a body')
我专门停留在如何重构的js代码......
navigator.serviceWorker.ready
.then((serviceWorkerRegistration) => {
serviceWorkerRegistration.pushManager.getSubscription()
.then((subscription) => {
$.post('/push', {
subscription: subscription.toJSON(),
});
});
});
使得subscription
将通过send_web_push
创建...
def send_web_push(title: , body:)
Webpush.payload_send(
vapid: {
subject: "mailto:[email protected]",
public_key: "BB1BO99HPVefIunkzz8sZSNhlEKuH62olxDKHx9qsEsjtnIF8DdvE8Yp5rxTOSF-VqY2hdjBxeUqulVs9E2XUXjQ=",
private_key: "SUvPgPr9PU_YAyvHorM0NcaMbSLEoOzqdyLlN2OgRN2Q="
},
message: {
title: title,
body: body,
icon: "assets/default.png"
}.to_json
)
end
于是一种新的方式,你想触发一个Web推送,当有人创造了一个新的记录您的模型? –