2017-04-26 49 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推送,当有人创造了一个新的记录您的模型? –

回答