一个信号推送通知重写文本

时间:2016-11-23 10:43:37

标签: android angularjs ionic-framework onesignal

我们可以在一段时间后使用One-Signal修改推送通知的文字吗?

例如:

我得到推文说 "用户正在呼叫" ,在一段时间后,如果推送通知没有打开,我想将相同的推送文字更改为 "您错过了来自用户" 的来电。

我无法从One-Signal找到任何API来执行此操作。

我尝试清除特定通知。只有:

OneSignal.clearOneSignalNotifications();

显然不起作用。

我尝试使用 collapse_id 更新现有通知,但它也无效。这是我在节点部分中使用的代码:

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);
})  

我使用了静态 collapse_id 来更新之前的通知。我还尝试使用 collapse_key 以防万一,但是它给了我多次推送通知,而不是覆盖它。

1 个答案:

答案 0 :(得分:0)

您可以在OneSignal notification create REST API调用上使用collapse_id来更新具有相同ID的现有通知。但是,目前仅在设备上尚未向Android上的用户显示通知时才有效。 (目前适用于iOS 10设备)您可以按照本机SDK issue #147获取Android上的进度,并在发布后不久将包含在Cordova SDK中。

如果您在此之前需要支持,可以按照问题的建议覆盖androidNotificationId。但请注意,这需要Android Native Java代码才能与Cordova一起使用。