Синтаксическая ошибка в операторе if Firebase Functions - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь исправить проблему со значком уведомления.Над версией 26 андроида определенный значок, а под 26 другой значок ... Но я не мог понять, как решить эту синтаксическую ошибку.Кстати проблем с получением андроида нет. Номер сборки.Firebase также регистрирует его правильно.

Синтаксическая ошибка в строке: if(sdknumber>26){
Код:

const functions = require('firebase-functions'); 
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotification =functions.database.ref('/notifyList/{receiver_id}/{sdk_number}/{notification_id}')
    .onWrite((change,context) =>
{
        const receiver_id = context.params.receiver_id;
        const sdk_number = context.params.sdk_number;
        const notification_id = context.params.notification_id;
        console.log('Notification to send: ',receiver_id);
        console.log('SDK Number: ',sdk_number);
        const sdknumber = Integer.parseInt(sdk_number);

        //const afterData = change.after.val();

        if(!change.after.exists()) 
        {
          return console.log('notification deleted from DB :',notification_id);
          return null;          
        }
    const deviceToken = admin.database().ref(`/Messenger/userlist/${receiver_id}/tokenID`).once('value');

    return deviceToken.then(result =>
    {
       const token_id = result.val();
       const payload = 
       {
            if(sdknumber>26){
                notification:
                {
               title: "New message!",
               body: "Tab to read it!",
               sound: "default",
               click_action: "OPENNOTIFICATION",
               icon: "rateiconsari"               
                }                   
            }else{
                notification:
                {
               title: "New message!",
               body: "Tab to read it!",
               sound: "default",
               click_action: "OPENNOTIFICATION",
               icon: "logo2"                  
                }                       
            }

       };

       return admin.messaging().sendToDevice(token_id,payload)
                .then(response =>
                {
                    console.log('notification sent');
                });
    });

    });

1 Ответ

0 голосов
/ 02 октября 2018

Ваш payload определяет буквальный объект JavaScript. Вы не можете поместить оператор if в объявление объекта таким образом.

Вы можете использовать оператор ?::

const payload = {
          notification: {
            title: "New message!",
            body: "Tab to read it!",
            sound: "default",
            click_action: "OPENNOTIFICATION",
            icon: sdknumber > 26 ? "rateiconsari" : "logo2"
          }                   
   };

Или вы можете использовать if/else вне определения, чтобы изменить payload в зависимости от версии SDK:

var payload =  {
         notification:{
           title: "New message!",
           body: "Tab to read it!",
           sound: "default",
           click_action: "OPENNOTIFICATION",
           icon: "rateiconsari"                                     
        }

   };
if(sdknumber <= 26) {
    payload.icon = "logo2";
}

Обратите внимание, что это проблема синтаксиса чистого JavaScript и ничего не имеетделать с Android.

...