Отправить уведомление Android с помощью node-gcm, не сворачивая их

Я отправляю уведомления на устройство Android с помощью node-gcm, и в некоторых случаях мне нужно отправить изображение с уведомлением для отображения в виде миниатюры, например так: уведомление с миниатюрой

И иногда мне нужно отправлять уведомления без миниатюры. С помощью приведенного ниже кода я могу отправить изображение в уведомлении, проблема в том, что когда получено другое уведомление, они разрушаются, делая новое, перезаписывая уведомление, которое уже было:

    var message = new gcm.Message({
                "data" : {
                    "title" : "Test",
                    "message" : "Test message!",
                    "priority" : 2, // Highest priority.
                    "ledColor" : [255, 0, 0, 1],
                    "content-available": "1",
                    "image": req.body.notificationImageUrl, //<-- image URL
                },
            });

Но если я настрою сообщение, как показано ниже, я не смогу найти способ отправить изображение, но уведомления не сворачиваются, и все они появляются. Другая проблема заключается в том, что светодиод не активируется в этой версии:

    var message = new gcm.Message({
                data: {
                    "priority" : 2, // Highest priority.
                    "content-available": "1",
                    "image": req.body.notificationImageUrl,  // <-- image URL
                },
                notification:{
                    title: "Test",
                    body: "Test message!",
                    color: "#892121",
                    sound: 'default',
                    vibrationPattern: [300, 150, 300], // Vibrate for 300ms then wait 150ms and then vibrate for 300ms.
                    ledColor: [255, 0, 0, 1], // <-- this does not work
                },
            });

Мне нужен способ отправить уведомление с миниатюрой таким образом, чтобы оно не перезаписывало уведомление, которое было ранее.

РЕДАКТИРОВАТЬ: я забыл упомянуть, я использую Ionic Framework с Cordova, поэтому я не могу управлять уведомлениями на устройстве, если нет способа сделать это через эти рамки. Заранее спасибо!

2 ответа

Решение

При рассмотрении проблем node-gcm, я нашел решение, есть параметр notId для добавления идентификатора в уведомление.

 var message = new gcm.Message({
     "data": {
         "title": "Test",
         "message": "Test message!",
         "priority": 2, // Highest priority.
         "ledColor": [255, 0, 0, 1],
         "content-available": "1",
         "image": req.body.notificationImageUrl,
         "notId": parseInt(Math.random() * new Date().getSeconds(), 10), // <-- this solved the problem
     },
 });

Управление отображением уведомлений осуществляется на устройстве. Вы должны убедиться, что на Android вы устанавливаете разные NOTIFICATION_ID для каждого уведомления, или последнее всегда будет заменять предыдущее.

// Sets an ID for the notification - make sure to change this for different notifications
int mNotificationId = 001;

// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

// Builds the notification and issues it
mNotifyMgr.notify(mNotificationId, mBuilder.build());
Другие вопросы по тегам