-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推送,當有人創造了一個新的記錄您的模型? –