我们可以在一段时间后使用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
以防万一,但是它给了我多次推送通知,而不是覆盖它。
答案 0 :(得分:0)
您可以在OneSignal notification create REST API调用上使用collapse_id
来更新具有相同ID的现有通知。但是,目前仅在设备上尚未向Android上的用户显示通知时才有效。 (目前适用于iOS 10设备)您可以按照本机SDK issue #147获取Android上的进度,并在发布后不久将包含在Cordova SDK中。
如果您在此之前需要支持,可以按照问题的建议覆盖androidNotificationId
。但请注意,这需要Android Native Java代码才能与Cordova一起使用。