Я добавляю Push-уведомления через GCM в свое приложение, но что-то застряло.
Когда я отправляю push-уведомление с моим приложением на переднем плане (открытым и на экране), оно отображается нормально, как и предполагалось:
Но когда я отправляю его со своим приложением в фоновом режиме, оно отображается так:
Поэтому мое большое изображение и цвет фона значка не отображаются.
Код для HTTP-вызова GCM:
{
"notification": {
"title": "Tecolutla, Veracruz",
"body": "¡Bienvenidos a Tecolutla!",
"icon": "push"
},
"priority": "high",
"data": {
"Mensaje": "Descubre muchísimos lugares en Visita Xalapa.",
"Class" : "Festividades"
},
"to": "/topics/global"
}
Код для GsmListenerService:
@SuppressWarnings("ConstantConditions")
private void sendNotification(Bundle data) {
Intent intent = new Intent(this, TecolutlaVeracruz.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("Push_Title", data.getBundle("notification").getString("title"));
intent.putExtra("Push_Body", data.getBundle("notification").getString("body"));
intent.putExtra("Push_Mensaje", data.getString("Mensaje"));
int Color = ColorManager.getColorBase(Main.INICIO);
if(data.containsKey("Class")){
if(data.getString("Class").equals("Inicio")) Color = ColorManager.getColorBase(Main.INICIO);
else if(data.getString("Class").equals("Nuestro Municipio")) Color = ColorManager.getColorBase(Main.NUESTRO_MUNICIPIO);
else if(data.getString("Class").equals("Festividades")) Color = ColorManager.getColorBase(Main.FESTIVIDADES);
}
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.push)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.acercade_applogo))
.setContentTitle(data.getBundle("notification").getString("title"))
.setContentText(data.getBundle("notification").getString("body"))
.setAutoCancel(true)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setColor(Color)
.setVibrate(new long[]{ 0, 100, 200, 300 })
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
Еще одна проблема, с которой я столкнулся, заключается в том, что уведомление не будет отображаться, если приложение будет убито или не запущено. Это нормально?