因此,我获得了使用Google Firebase云消息传递的推送通知。现在唯一的问题是通知没有显示任何警报,只有当我拉下我看到它的通知抽屉时。
我有这部分代码,我认为添加了“弹出”功能
public void displayNotification(String title, String body){
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext, Constants.CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(body);
Intent intent = new Intent(mContext, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext,0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingIntent);
NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if(mNotificationManager != null) {
mNotificationManager.notify(1, mBuilder.build());
}
}
我遇到的其他问题是,当我单击通知时,它会打开活动但不会删除通知。
前景弹出窗口
在构建器下,您需要设置高优先级或最高优先级以及默认通知振动/声音,以便您可以看到“弹出”窗口
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setDefaults(NotificationCompat.DEFAULT_ALL);
背景弹出窗口
要实现后台弹出窗口,您需要微调FCM有效负载。如果你的有效载荷中同时有data
和notification
,则你的displayNotification
方法无法处理弹出窗口。你需要一个data
唯一的有效载荷。
Google已将此行为置于文档中。 参考 - FCM for android: popup system notification when app is in background
AutoCancel
对于第二个问题,请在构建器中添加setAutoCancel
.setAutoCancel(true)
额外的说明
对于像Xiaomi和Redmi这样的设备,您需要转到“设置”以启用浮动通知