Android, Urban AirShip - изменить сообщение - PullRequest
1 голос
/ 20 февраля 2012

Как изменить уведомление в Android на локализованное? Я просто хочу изменить сообщение, которое я получаю от Urban AirShip, прежде чем оно будет отображаться на панели уведомлений?

Ответы [ 5 ]

7 голосов
/ 04 марта 2012

Вы можете использовать этот метод: PushManager.shared().setNotificationBuilder(null); и отправить собственное уведомление с уведомлением Android из SDK

0 голосов
/ 28 августа 2014

Пожалуйста, используйте этот код для отключения уведомлений Urban Airship, переопределите BasicPushNotificationBuilder:

BasicPushNotificationBuilder nb = new BasicPushNotificationBuilder() {
    @Override
    public Notification buildNotification(String alert,
            Map<String, String> extras) {
        return null;
    }
};
// Disable notifications
PushManager.shared().setNotificationBuilder(nb);
0 голосов
/ 03 июня 2014

Я прочитал ответы и нашел комбинированное решение.

  1. Вы хотите отключить обработчик уведомлений UrbanAirship по умолчанию.Если вы сделаете это, он не будет генерировать и показывать вам уведомления вообще.PushManager.shared().setNotificationBuilder(null); (по предложению Дэвида Т)

  2. Вы хотите создать собственное уведомление.Это можно сделать внутри вашего IntentReceiver. Эта ссылка поможет.

Надеюсь, это поможет другим.

0 голосов
/ 20 февраля 2012

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

0 голосов
/ 20 февраля 2012

Да, вы можете изменить сообщение после получения сообщения от Urban AirShip для внутреннего использования в приложении , но не можете отобразить измененное сообщение в панели уведомлений .

Вы можете проверить сообщение в вашем IntentReceiver

public class IntentReceiver extends BroadcastReceiver {

    private static final String logTag = "Hey";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(logTag, "Received intent: " + intent.toString());
        String action = intent.getAction();

        if (action.equals(PushManager.ACTION_PUSH_RECEIVED)) {

                int id = intent.getIntExtra(PushManager.EXTRA_NOTIFICATION_ID, 0);

          Log.v(logTag, "Received push notification. Alert: " + intent.getStringExtra(PushManager.EXTRA_ALERT)
                + ". Payload: " + intent.getStringExtra(PushManager.EXTRA_STRING_EXTRA) + ". NotificationID="+id);

               //can get your message here

        } else if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {

            Log.v(logTag, "User clicked notification. Message: " + intent.getStringExtra(PushManager.EXTRA_ALERT)+ ".Payload:" + intent.getStringExtra("PushManager.EXTRA_STRING_EXTRA"));


            Intent launch = new Intent(Intent.ACTION_MAIN);

            UAirship.shared().getApplicationContext().startActivity(launch);

        } else if (action.equals(PushManager.ACTION_REGISTRATION_FINISHED)) {
            Log.i(logTag, "Registration complete. APID:" + intent.getStringExtra(PushManager.EXTRA_APID)
                    + ". Valid: " + intent.getBooleanExtra(PushManager.EXTRA_REGISTRATION_VALID, false));


        }

            }
}
...