当应用程序正在运行且如果我点击它时通知是警报,则会通知那里(onMessageReceived
被调用)
但是当应用程序处于后台时,如果我点击它就会发出通知,onMessageReceived
未调用
如何解决?
PS。抱歉,我的英语不好。 我的代码
public class MyFirebaseMessagingService extends FirebaseMessagingService {
String fnotification="0";
String post_id;
String bage;
String notification_id;
String type;
String message;
private static final String TAG = "MyFirebaseMsgService";
RemoteMessage remoteMessage;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d(TAG, "onMessageReceived: ");
RemoteMessage.Notification notification = remoteMessage.getNotification();
Map<String, String> data = remoteMessage.getData();
Log.e("FROM", remoteMessage.getFrom());
post_id = data.get("post_id");
bage = data.get("badge");
type = data.get("type");
message = data.get("message");
notification_id = data.get("notification_id");
Log.d("MyFirebaseMessagingServ","data=>"+data);
Log.d("MyFirebaseMessagingServ","notification=>"+notification);
sendNotification(notification, data);
//push_token
}
@Override
public void handleIntent(Intent intent) {
super.handleIntent(intent);
}
private void sendNotification(RemoteMessage.Notification notification, Map<String, String> data) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
int int_badge_count = Integer.parseInt(bage);
ShortcutBadger.with(getApplicationContext()).count(int_badge_count);
} catch (Exception e) {
}
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.icon_android);
intent.putExtra("menuFragment", fnotification.toString());
intent.putExtra("badges_count", bage);
intent.putExtra("post_id",post_id);
intent.putExtra("type",type);
intent.putExtra("message",message);
intent.putExtra("notification_id",notification_id);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setContentTitle(notification.getTitle())
.setContentText(notification.getBody())
.setAutoCancel(true)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
//.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.win))
.setContentIntent(pendingIntent)
// .setContentInfo("Hello")
.setLargeIcon(icon)
//.setColor(Color.RED)
// .setLights(Color.RED, 1000, 300)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setPriority(Notification.PRIORITY_MAX)
.setSmallIcon(getNotificationIcon());
// .setSmallIcon(R.drawable.icon_android);
/* try {
String picture_url = data.get("picture_url");
if (picture_url != null && !"".equals(picture_url)) {
URL url = new URL(picture_url);
Bitmap bigPicture = BitmapFactory.decodeStream(url.openConnection().getInputStream());
notificationBuilder.setStyle(
new NotificationCompat.BigPictureStyle().bigPicture(bigPicture).setSummaryText(notification.getBody())
);
}
} catch (IOException e) {
e.printStackTrace();
}*/
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
sendNoti(this);
}
private void sendNoti(Context context){
Intent intent = new Intent("push");
intent.putExtra("menuFragment",fnotification.toString());
intent.putExtra("post_id", post_id);
intent.putExtra("badges_count",bage);
intent.putExtra("type",type);
intent.putExtra("notification_id",notification_id);
intent.putExtra("message",message);
context.sendBroadcast(intent);
}
private int getNotificationIcon() {
Log.d(TAG, "getNotificationIcon: ");
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.ic_notifications_white_24dp : R.drawable.icon_android;
// return useWhiteIcon ? R.drawable.btn_menu_notification_1 : R.drawable.ic_launcher;
}