2016-05-08 9 views
1

Ich habe einen Parse-Server mit Heroku (von meinem GitHub Repo) bereitgestellt und von mongoLab gehostet. Ich versuche, geplante Push-Benachrichtigungen in meiner App zu senden, und kue scheint die praktikabelste Option zu sein. Da ich mich jedoch nicht damit auskenne, bin ich mir nicht sicher, wie ich es angehen soll. Ich glaube, ich habe kue auf meinem Server installiert (über GitHub). Nun, ich möchte diesen Code terminieren zu einem Zeitpunkt in der Zukunft ausgeführt werden:Wie plane ich einen Job mit kue auf Parse-Server?

Parse.Cloud.define("sendPush", function(request, response) { 


     var pushQuery = new Parse.Query(Parse.Installation); 
     pushQuery.equalTo('username', request.params.targetUsername); 

     Parse.Push.send({ 
     where: pushQuery, // Set our Installation query                                        
     data: { 
      alert: 'Hello!', 
      badge: 'Increment', 
      sound: 'PopDing.caf' 
     }, 
     }, { success: function() { 
    console.log("#### PUSH OK"); 
     }, error: function(error) { 
    console.log("#### PUSH ERROR" + error.message); 
     }, useMasterKey: true}); 

    }); 

Wenn ich dies der richtige Weg bin naht, dann muss ich den Code einfach einen Job einplanen (der Code oben) zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt werden. Ich plane nicht, den Code regelmäßig oder in Intervallen auszuführen, nur einmal zur angegebenen Zeit in der Zukunft. Eine Antwort oder irgendein Rat würde sehr geschätzt werden, danke!

Antwort

1

Hier ist ein Beispiel, wie Sie Scheduling diese Aufgabe mit kue nur einmal zu einem bestimmten Zeitpunkt in der Zukunft erreichen können: (nach 12 Stunden)

var kue = require('kue'); 

// create our job queue 
var jobs = kue.createQueue(); 

// one minute 
var minute = 60000; 

var job= jobs.create('parseCloud', { 
    alert: 'Hello!', 
      badge: 'Increment', 
      sound: 'PopDing.caf' 
}).delay(minute * 60 * 12) 
    .priority('high') 
    .save(); 



job.on('complete', function() { 
    console.log('renewal job completed'); 
}); 



jobs.process('parseCloud', function (job, done) { 

     var pushQuery = new Parse.Query(Parse.Installation); 
     pushQuery.equalTo('username', request.params.targetUsername); 

     Parse.Push.send({ 
     where: pushQuery, // Set our Installation query                                        
     data: { 
      alert: job.data.alert, 
      badge: job.data.badge, 
      sound: job.data.sound 
     }, 
     }, { success: function() { 

     console.log("#### PUSH OK"); 
     done(); 
     }, error: function(error) { 
     console.log("#### PUSH ERROR" + error.message); 
     done(); 
     }, useMasterKey: true}); 

}); 

// start the UI 
kue.app.listen(3000); 
console.log('UI started on port 3000'); 
+0

Ihnen sehr für die Antwort danken! Ich fühle mich sehr nahe. Allerdings habe ich diesen genauen Code verwendet und ihn in eine Cloud-Funktion ('Parse.Cloud.define (" sendPushToSpecificUser ", Funktion (request, response) {" Code, den du zur Verfügung gestellt hast}}; ") gestellt, den ich von einem Gerät aus anrufe . Ich bekomme dann einen Fehler und die Benachrichtigung wird nicht gesendet. Irgendwelche Ideen, warum das passiert? –

+1

Hi Tal Avissar, 1. Wo kann dieser Quellcode verwendet werden? 2. Wenn ich den Job beim Starten des Parse-Servers starten möchte, wie sieht der Code dann aus? 3. Benötige ich diese Codezeile "due.app.listen (3000);? –