2016-11-23 3 views
0

Können wir den Text von Push-Benachrichtigung nach einer bestimmten Zeit mit One-Signal ändern?Ein Signal Push-Benachrichtigung Text umschreiben

Zum Beispiel:

ich die Push bekommen sagen „Ein Nutzer ruft“, nach einer bestimmten Zeit, wenn die Push-Benachrichtigung nicht geöffnet, ich möchte die gleiche Push ändern Text an "Sie haben den Anruf von Benutzer verpasst".

Ich konnte keine API dafür von One-Signal finden.

Ich habe versucht, bestimmte Benachrichtigung zu löschen. Es gab nur:

OneSignal.clearOneSignalNotifications(); 

was anscheinend nicht funktioniert.

Ich habe versucht, die collapse_id zu verwenden, um die vorhandene Benachrichtigung zu aktualisieren, aber es funktioniert auch nicht. Hier ist der Code i im Knoten Teil verwenden:

app.post('/pushNotification', function(request, response) { 
var userId = request.query.callerId; 
var pushId = request.query.pushId; 
var callerName = request.query.callerName; 
var callerImage = request.query.callerImage; 
var sendNotification = function(data) { 
    var headers = { 
    "Content-Type": "application/json; charset=utf-8", 
    "Authorization": "Basic keywhichisworking" 
    }; 

    var options = { 
    host: "onesignal.com", 
    port: 443, 
    path: "/api/v1/notifications", 
    method: "POST", 
    headers: headers 
    }; 

    var https = require('https'); 
    var req = https.request(options, function(res) { 
    res.on('data', function(data) { 
     console.log("Response:"); 
     var one_signal_resp = JSON.parse(data); 
     console.log(JSON.parse(data)); 
     response.json({data: one_signal_resp, 
     message:'success from onesignal'}); 
    }); 
    }); 

    req.on('error', function(e) { 
    response.json({error: e, 
     message:'error from onesignal'}); 
    console.log("ERROR:"); 
    console.log(e); 
    }); 

    req.write(JSON.stringify(data)); 
    req.end(); 
}; 

var message = { 
    app_id: "myappidwhichisworking", 
    contents: {'en': callerName+' is Calling..', 
     'es': 'Cuerpo de la notificación'}, 
    include_player_ids :[pushId], 
    large_icon:"www/img/pushImage.png", 
    small_icon:"sym_action_call", 
    big_picture:callerImage, 
    collapse_id: 'call',//static collapse_id 
    android_sound:"beep30", 
    data:{"callerId":userId,"callerName":callerName,"callerImage":callerImage,"isCall":true,"isMessage":false}, 
}; 


sendNotification(message); 
}) 

ich verwendet habe, die statischen collapse_id die vorherige Benachrichtigung zu aktualisieren. Ich versuchte auch collapse_key nur für den Fall, aber es gibt mir mehrere Push-Benachrichtigungen, anstatt es zu überschreiben.

+1

Hallo, entschuldigung, wenn ich dich nicht richtig verstehe, aber ... Ist das möglich? Ich meine, wenn Sie eine Push-Benachrichtigung senden und vom Benutzer erhalten, denke ich, dass Sie nicht die Kontrolle darüber haben. Ist der Benutzer, der öffnen kann, löschen, etc etc .. Gibt es einen Dienst, der es implementiert? Ein Ansatz: vielleicht können Sie einen Hack mit den Stacking-Benachrichtigungen machen, schauen Sie hier https://developer.android.com/training/wearables/notifications/stacks.html – jos

+0

Hi @jos, es gibt Rundwege wie das Stapeln der Benachrichtigung, Anstatt die Benachrichtigung zu stapeln, möchte ich, dass die letzten bleiben, was so aussieht, als würde ich die aktuelle Push-Benachrichtigung entfernen und sie durch einen neuen Push ersetzen. Infact, wenn ich diese bestimmte Benachrichtigung entfernen kann, kann ich cordovas lokalen Stoß verwenden, um den Druck geändert zu haben. –

Antwort

0

Sie können den REST-API-Aufruf OneSignal notification create mit collapse_id verwenden, um vorhandene Benachrichtigungen mit derselben ID zu aktualisieren. Dies funktioniert jedoch derzeit nur, wenn die Benachrichtigung für den Benutzer auf Android nicht bereits auf dem Gerät angezeigt wurde. (Dies funktioniert derzeit auf iOS 10-Geräten.) Sie können dem nativen SDK issue #147 folgen, um einen Fortschritt für Android zu erzielen, und es wird kurz nach der Veröffentlichung im Cordova SDK enthalten sein.

Wenn Sie zuvor Unterstützung benötigen, können Sie der Empfehlung zum Übergehen androidNotificationId folgen. Beachten Sie jedoch, dass dazu Android-Native-Java-Code für Cordova erforderlich ist.

+0

Hallo @jkasten, ich habe versucht mit collapse_id, aber es funktioniert nicht so gut. Bitte sehen Sie meine Bearbeitung. –