2017-04-26 73 views
-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 
+0

於是一種新的方式,你想觸發一個Web推送,當有人創造了一個新的記錄您的模型? –

回答