【发布时间】:2017-09-23 09:08:11
【问题描述】:
webpush documentation 显示控制器中的工作原理...
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:sender@example.com",
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:sender@example.com",
public_key: "BB1BO99HPVefIunkzz8sZSNhlEKuH62olxDKHx9qsEsjtnIF8DdvE8Yp5rxTOSF-VqY2hdjBxeUqulVs9E2XUXjQ=",
private_key: "SUvPgPr9PU_YAyvHorM0NcaMbSLEoOzqdyLlN2OgRN2Q="
},
message: {
title: title,
body: body,
icon: "assets/default.png"
}.to_json
)
end
【问题讨论】:
-
那么,当有人为您的模型创建新记录时,您是否尝试触发 Web 推送?
标签: javascript jquery ruby-on-rails service-worker web-push