Push-уведомление Urban Airship не отображается на переднем плане в amdroid

Я очень новичок в Cordova, а также использую концепцию push-уведомлений Urban Airship. У меня есть требование, например, я должен также получать push-уведомления на переднем плане. Но я получаю уведомление только в фоновом режиме. Я не получаю уведомление на переднем плане.
Вот мой код:

function initPush(){
      //alert("Push initialize");
      console.log("Device ready!");
      var status = localStorage.getItem("pushEnable")
        if(status == null){
            UAirship.setUserNotificationsEnabled(true);
      }else{
               if (localStorage.getItem("pushEnable") == "true") {
              //  alert("SET USER NOTFICAION ENABLE ");
              UAirship.setUserNotificationsEnabled(true);
          } else {
              //  alert("SET USER NOTFICAION DISBALE ");
              UAirship.setUserNotificationsEnabled(false)
          }
      }
      localStorage.setItem("uuid", device.uuid);
      //alert("DEVICE ID ==>"+device.uuid);
      var onRegistration = function(event) {
      //  alert("ON REGISTRAION CALLED");
        window.plugins.spinnerDialog.show(null,"loading....", true);
          if (!event.error) {
            window.plugins.spinnerDialog.hide();
          //  alert("ON REGISTRAION SUCESS");
              console.log("Reg Success:---> " + event.channelID)
          //    alert("ON REGISTRAION EVENT "+ JSON.stringify(event));
              var uuid = localStorage.getItem("uuid")
              localStorage.setItem("channelId", event.channelID)
              var deviceInfo = {
                  channel_id: event.channelID,
                  device_id: uuid
              };
              UAirship.setNamedUser(uuid, function() {
                  //setNamedUser(uuid)
                  //alert("SETNAME SUCESS");
              })
          }else{
            window.plugins.spinnerDialog.hide();
          //  alert("ON REGISTRAION FAILED");
          }
      }
      //alert(device.serial)
      var onPushReceived = function(event) {
        alert("ON PUSH RECEIVED CALL");
          if (event.message) {
              dialogAlert("Message From LockerRoom", event.message)
                alert("Message From LockerRoom", event.message)
              console.log("Received push: " + event.message)
          } else {
              console.log("No incoming message")
          }
      }
      // Notification opened callback
      var notificationOpened = function(event) {
          if (event.message) {
              console.log("Notification opened: " + event.message)
          } else {
              console.log("No incoming message")
          }
      }
      // Deep link callback
      var handleDeepLink = function(event) {
          console.log("Deep link: " + event.deepLink)
      }
      // Register for any urban airship events
      document.addEventListener("urbanairship.registration", onRegistration, false)
      document.addEventListener("urbanairship.push", onPushReceived, false)
      document.addEventListener("urbanairship.notification_opened", notificationOpened, false)
      document.addEventListener("urbanairship.deep_link", handleDeepLink, false)
      // Handle resume
      document.addEventListener("resume", function() {
        //  alert("Device resume!")
          UAirship.resetBadge()
          // Reregister for urbanairship events if they were removed in pause event
          document.addEventListener("urbanairship.registration", onRegistration, false)
          document.addEventListener("urbanairship.push", onPushReceived, false)
      }, false)
      // Handle pause
      document.addEventListener("pause", function() {
        //  alert("Device Pause!")
          // Remove urbanairship events.  Important on android to not receive push in the background.
          document.removeEventListener("urbanairship.registration", onRegistration, false)
          document.removeEventListener("urbanairship.push", onPushReceived, false)
      }, false)
      // Get the launch notification if its available.
      //this.receivedEvent('deviceready');
}
  function initiateUI() {
      //alert("InitUI");
      var struuid = localStorage.getItem("uuid")
      $('#namedUser').text(struuid)
      var setNamedUser = function(namedUser) {
          document.getElementById("setNamedUserField").disabled = true;
          var namedUser = $("#namedUser").val(struuid)
          UAirship.setNamedUser(namedUser, function() {
                                setNamedUser(struuid)
                                })
          $("#namedUser").text(namedUser)
      }
      // Vibrate and Sound is only available on Android
      if (device.platform != "Android") {
          $("#soundEnabledSection").hide()
          $("#vibrateEnabledSection").hide()
      }
      UAirship.getNamedUser(function(namedUser) {
                            //alert("getNamedUser--->" + getNamedUser);
                            if (namedUser) {
                            console.log("Got namedUser: " + namedUser)
                            setNamedUser(namedUser)
                            }
                            })
      // Update the interface with the current UA settings
      //var isEnabled = localStorage.getItem("pushEnable");
      UAirship.isUserNotificationsEnabled(function(isEnabled) {
                                        //  alert("isUserNotificationsEnabled **(* ---- ENTER " + isEnabled); //0 - false
                                          if (localStorage.getItem("pushEnable") == null) {
                                          $('#pushEnabled').val(isEnabled ? 'on' : 'off').change()
                                          } else if (localStorage.getItem("pushEnable") == "true") {
                                          $('#pushEnabled').val('on').change();
       } else {
                                          $('#pushEnabled').val('off').change();
         }
       })
      // Set up change callbacks for the UI elements
      $('#pushEnabled').change(function() {
       var isEnabled = ($('#pushEnabled').val() == "on")
      UAirship.setUserNotificationsEnabled(isEnabled) //TRUE FALSE
      localStorage.setItem("pushEnable", isEnabled); // TRUE FALSE
  })
}

Я не знаю, какую ошибку я сделал здесь. Может ли кто-нибудь помочь мне решить эту проблему. Заранее спасибо.


person Anusha iworld    schedule 01.08.2017    source источник


Ответы (1)


Push-уведомление от Android по умолчанию выдается как предупреждение, когда приложение находится на переднем плане. Обработчик события onPushReceived будет вызван напрямую. Вы можете получить только предупреждение Dialog о том, что вы позвонили, и сообщения консоли будут напечатаны.

Если вы хотите, чтобы оно отображалось как уведомление, используйте значение "forceShow":"true" при отправке уведомления. Источник это. (Я не уверен, что это работает с плагинами для городских авиалиний, но, пожалуйста, попробуйте и дайте мне знать).

Во всяком случае, для кордовы это упрощено. Вы можете использовать phonegap-push-plugin. См. пример здесь.

person pro_cheats    schedule 02.08.2017