@Override
  public void onMessageReceived(String from, Bundle extras) {
    Log.d(LOG_TAG, "onMessage - from: " + from);

    if (extras != null) {
      Context applicationContext = getApplicationContext();

      SharedPreferences prefs =
          applicationContext.getSharedPreferences(
              PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
      boolean forceShow = prefs.getBoolean(FORCE_SHOW, false);
      boolean clearBadge = prefs.getBoolean(CLEAR_BADGE, false);

      extras = normalizeExtras(applicationContext, extras);

      if (clearBadge) {
        PushPlugin.setApplicationIconBadgeNumber(getApplicationContext(), 0);
      }

      /*
       * do push echo
       */
      Log.d(LOG_TAG, "extras:" + extras);
      PushPlugin.doPushEcho(getBaseContext(), null);

      // if we are in the foreground and forceShow is `false` only send data
      if (!forceShow && PushPlugin.isInForeground()) {
        Log.d(LOG_TAG, "foreground");
        extras.putBoolean(FOREGROUND, true);
        extras.putBoolean(COLDSTART, false);
        PushPlugin.sendExtras(extras);
      }
      // if we are in the foreground and forceShow is `true`, force show the notification if the
      // data has at least a message or title
      else if (forceShow && PushPlugin.isInForeground()) {
        Log.d(LOG_TAG, "foreground force");
        extras.putBoolean(FOREGROUND, true);
        extras.putBoolean(COLDSTART, false);

        showNotificationIfPossible(applicationContext, extras);
      }
      // if we are not in the foreground always send notification if the data has at least a message
      // or title
      else {
        Log.d(LOG_TAG, "background");
        extras.putBoolean(FOREGROUND, false);
        extras.putBoolean(COLDSTART, PushPlugin.isActive());

        showNotificationIfPossible(applicationContext, extras);
      }
    }
  }
 @Override
 public void onError(Context context, String errorId) {
   Log.e(LOG_TAG, "onError - errorId: " + errorId);
   // if we are in the foreground, just send the error
   if (PushPlugin.isInForeground()) {
     PushPlugin.sendError(errorId);
   }
 }
  @Override
  protected void onMessage(Context context, Intent intent) {
    Log.d(LOG_TAG, "onMessage - context: " + context);

    // Extract the payload from the message
    Bundle extras = intent.getExtras();
    if (extras != null) {
      // if we are in the foreground, just surface the payload, else post it to the statusbar
      if (PushPlugin.isInForeground()) {
        extras.putBoolean(FOREGROUND, true);
        PushPlugin.sendExtras(extras);
      } else {
        extras.putBoolean(FOREGROUND, false);

        // Send a notification if there is a message
        String message = this.getMessageText(extras);
        String title = getString(extras, TITLE, "");
        if ((message != null && message.length() != 0) || (title != null && title.length() != 0)) {
          createNotification(context, extras);
        }
      }
    }
  }