Как отобразить данные из push-уведомлений в приложении для Android - PullRequest
0 голосов
/ 12 июня 2018

У меня есть приложение для Android, которое использует FCM для push-уведомлений.Существует серверная часть, которая отправляет push-уведомления

Каждый раз, когда пользователь выполняет загрузку изображения, push-уведомление отправляется тому, кто подписан на эту тему.

При нажатии уведомления в области уведомленийЯ перенаправлен на первую страницу приложения.

Как я могу заставить push-уведомления работать так же, как в Instagram.

Получив уведомление и нажав на него, я хочу переместитьна этот конкретный экран и посмотрите изображение, которое было загружено.

Если пользователь находится в приложении во время получения уведомления.Как обновить активность для отображения содержимого.Нужно ли делать внутренний запрос для отображения новых данных или я могу отображать содержимое из самого уведомления?

Есть ли какой-нибудь пример, на который я могу взглянуть?

Буду признателен за любую помощь.Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Для

Получив уведомление и щелкнув по нему, я хочу перейти к этому конкретному экрану и увидеть загруженное изображение.

Использовать код ниже

 package com.example.androiddatepicker;

    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.support.v4.app.NotificationCompat;
    import android.widget.Toast;

    public class AlarmReceiver extends BroadcastReceiver {

     private static final int MY_NOTIFICATION_ID=1;
     NotificationManager notificationManager;
     Notification myNotification;

     @Override
     public void onReceive(Context context, Intent intent) {
      Toast.makeText(context, "Alarm received!", Toast.LENGTH_LONG).show();

         Intent myIntent = new Intent(context, DoSomething.class);
         PendingIntent pendingIntent = PendingIntent.getActivity(
                context, 
                0, 
                myIntent, 
                Intent.FLAG_ACTIVITY_NEW_TASK);

         myNotification = new NotificationCompat.Builder(context)
           .setContentTitle("Exercise of Notification!")
           .setContentText("Do Something...")
           .setTicker("Notification!")
           .setWhen(System.currentTimeMillis())
           .setContentIntent(pendingIntent)
           .setDefaults(Notification.DEFAULT_SOUND)
           .setAutoCancel(true)
           .setSmallIcon(R.drawable.ic_launcher)
           .build();

         notificationManager = 
           (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
         notificationManager.notify(MY_NOTIFICATION_ID, myNotification);
     }

    }

и для

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

Ответ - использовать локальное широковещательное сообщение получателя широковещательной рассылки из действия по уведомлению и по какому действию необходимо обновить отображаемый контентВ этом случае вам нужно реализовать локальный широковещательный приемник, перехватить это сообщение и снова вызвать ваш веб-интерфейс отображения контента в методе onReceive широковещательного приемника, чтобы обновить отображаемый контент

0 голосов
/ 12 июня 2018

Чтобы запустить действие, которое включает в себя задний стек действий, вам нужно создать экземпляр TaskStackBuilder и вызвать addNextIntentWithParentStack (), передав ему Intent для действия, которое вы хотите запустить.

ПокаВы определили родительское действие для каждого действия, как описано выше, вы можете вызвать getPendingIntent (), чтобы получить PendingIntent, который включает весь задний стек.

// Create an Intent for the activity you want to start
 Intent resultIntent = new Intent(this, ResultActivity.class);

// Create the TaskStackBuilder and add the intent, which inflates the back 
 stack

 TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
  stackBuilder.addNextIntentWithParentStack(resultIntent);

// Get the PendingIntent containing the entire back stack
  PendingIntent resultPendingIntent =
    stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
...