Открыть приложение для Android из PUSH-уведомления

Есть небольшая проблема, которая беспокоила меня ..

Я настроил свое приложение для получения PUSH-уведомлений от Urban Airship, и все работает нормально, но когда я нажимаю на уведомление в центре уведомлений, ничего не происходит.

Я хочу, чтобы мое приложение открывалось, когда пользователь нажимает на PUSH-уведомление. Что я могу сделать для этого?

Любая помощь, как всегда, приветствуется.

Спасибо


person PinkFloydRocks    schedule 17.04.2012    source источник
comment
Ваш процесс приложения работает в фоновом режиме?   -  person Paramvir Singh    schedule 13.06.2013


Ответы (4)


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

Пример:

  Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

Дополнительную информацию можно найти здесь

person San    schedule 17.04.2012
comment
Куда идет этот код? У меня тот же вопрос, что и у первоначального плаката, но я не нахожу для этого логического места. Если это имеет значение, я использую Pushwoosh для отправки уведомлений. - person Magua; 30.01.2013
comment
Этот код предназначен для создания уведомления. У вас есть какой-нибудь класс приемника...? Поместите его в onreceive. - person San; 30.01.2013

Вам нужно использовать настраиваемый построитель уведомлений и использовать одно из ваших действий в качестве PendingIntent.

https://docs.urbanairship.com/android-lib/reference/com/urbanairship/push/CustomPushNotificationBuilder.html

person smith324    schedule 17.04.2012

После одного из своих примеров проектов (https://github.com/urbanairship/android-samples/tree/master/app/src/main/java/com/urbanairship/sample), вы можете расширить класс AirshipReceiver, а затем переопределить метод onReceive. . Это помогло мне:

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);

    String action = intent.getAction();
    if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) {
        Intent launch = new Intent(Intent.ACTION_MAIN);
        launch.setClass(UAirship.shared().getApplicationContext(), MyHome.class);
        launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        launch.putExtra("doWhatever",true);
        UAirship.shared().getApplicationContext().startActivity(launch);
    }

}
person Alberto M    schedule 23.10.2017

вы должны вызвать pendingIntent перед вызовом .setAutoCancel(true);

посмотри на моего строителя:

    NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(),channel_id).setSmallIcon(R.drawable.logo).setSound(uri).setVibrate(new long[]{1000,1000,1000,1000,1000})
            .setOnlyAlertOnce(true).setContentIntent(pendingIntent).setAutoCancel(true);
person MyNameIsKael    schedule 14.07.2020