2017-02-20 4 views
3

Я имею дело с push-уведомлениями. Когда я получаю несколько уведомлений, все они отображаются в строке состояния. Мне нужно решение, в котором в строке состояния отображается только один значок, а уведомления группируются один над другим.Как установить push-уведомления в Android?

ответ

2

Google является вашим другом: https://developer.android.com/guide/topics/ui/notifiers/notifications.html#bundle

Начиная с Android 7.0 (уровень API 24), Android предоставляет разработчикам новый способ для представления очереди уведомлений: сгруппированных уведомлений. Это похоже на функцию «Уведомления» в Android Wear. Например, если ваше приложение создает уведомления для принятых сообщений, когда получено несколько сообщений, объедините уведомления вместе как одна группа. Вы можете использовать метод Builder.setGroup() для объединения похожих уведомлений.

+1

я пошел по методу SetGroup(). но для каждого нового уведомления значок отображается в строке состояния. Мое требование: я должен получать уведомления, уложенные один над другим, но должен отображаться только один значок уведомления. Я использовал стиль «inbox», но добавление строк является статическим. как я могу отображать несколько уведомлений с разными идентификаторами уведомлений, но из одного приложения, уложенных один над другим. очень похоже watsapp. Предыдущие уведомления не должны заменяться новым новым уведомлением, а я хочу, чтобы он был уложен в стек. –

+0

@freddy pradeep Ваша проблема похожа на http://stackoverflow.com/questions/17521908/android-gcm-multiple-push-notifications-with-one-icon-in-status-bar – Androbin

0
public class FirebaseInstanceIDService extends FirebaseInstanceIdService { 
private String TAG="FirebaseInstanceIDService"; 
private Context context; 
@Override 
public void onTokenRefresh(){ 
    context=getApplicationContext(); 
    String Token= FirebaseInstanceId.getInstance().getToken(); 
    saveToken(Token); 
} 

private void saveToken(String token) { 
    Log.i(TAG,token); 
    SharedPref.setToken("Token",token,context); 
} 
} 

создавать службы

public class FirebaseMessaginService extends FirebaseMessagingService { 
int i=0; 
private int temp=0; 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    showNotification(remoteMessage.getData().get("message")); 

} 

private void showNotification(String message) { 

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
    builder.setAutoCancel(true) 
      .setContentTitle("Track Mee") 
      .setContentText(message) 
      .setSmallIcon(R.drawable.ic_marker) 
      .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(0, builder.build()); 

} 
} 

в файле манифеста написать

<service android:name=".Service.FirebaseInstanceIDService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
    </intent-filter> 
</service> 
<service 
    android:name=".Service.FirebaseMessaginService" 
    android:enabled="true" 
    android:exported="true"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
    </intent-filter> 
</service> 
Смежные вопросы