通知出现在通知列表中,但不会在主屏幕上弹出
Notification comes in notification list but not pop ups on main screen
我分享了两张图片,你看看你就会明白我的问题了
在拳头图像通知中成功显示更好的我通知但是
我希望它首先出现在主屏幕上,如第二张图片所示,只是这个电报通知。
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
// r.play();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
r.setLooping(false);
}
// vibration
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = {100, 300, 300, 300};
v.vibrate(pattern, -1);
int resourceImage = getResources().getIdentifier(remoteMessage.getNotification().getIcon(), "drawable", getPackageName());
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder.setSmallIcon(R.mipmap.betterme);
} else {
builder.setSmallIcon(R.mipmap.betterme);
}
Intent resultIntent = new Intent(this, SplashScreen.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentTitle(remoteMessage.getNotification().getTitle());
builder.setContentText(remoteMessage.getNotification().getBody());
builder.setContentIntent(pendingIntent);
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getNotification().getBody()));
builder.setAutoCancel(true);
builder.setOngoing(true);
builder.setPriority(NotificationCompat.PRIORITY_MAX);
builder.setSound(notification);
mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "Your_channel_id";
NotificationChannel channel = new NotificationChannel(
channelId,
"Channel human readable title",
NotificationManager.IMPORTANCE_HIGH);
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build();
channel.setSound(notification, audioAttributes);
mNotificationManager.createNotificationChannel(channel);
builder.setChannelId(channelId);
}
mNotificationManager.notify(100, builder.build());
}
}
first image
second image
如果我没理解错的话,你想要一个提醒通知。
请注意,android 系统决定何时将通知设置为提醒通知并拥有最终决定权 - 而不是开发者。在这里你可以找到一些例子:https://developer.android.com/guide/topics/ui/notifiers/notifications#Heads-up
确保您的设置反映了这些。从您的示例来看,情况似乎是这样,但也许您已经更改了通知渠道设置(从应用程序设置),这会覆盖您的代码首选项(用户优先于应用程序)。
此外,请注意,如果您向上(而不是横向)滑动抬头通知,Android 会开始一段冷静时间,该应用会在几秒钟内不显示任何抬头通知(或者更多)。您也可以使用 Telegram 或任何其他应用程序进行尝试。冷静时间过后,它会再次出现,就像提醒通知一样。这是 Android 用来防止应用程序对用户造成干扰的一种方式。
通知中似乎没有问题。但是您的频道已经创建并带有正常通知,您将 NotificationChannel 更新为 IMPORTANCE_HIGH
。
Once the channel is created with priority it cannot be changed
。所以您可以更改频道ID或卸载并重新安装并测试它。
我分享了两张图片,你看看你就会明白我的问题了
在拳头图像通知中成功显示更好的我通知但是 我希望它首先出现在主屏幕上,如第二张图片所示,只是这个电报通知。
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
// r.play();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
r.setLooping(false);
}
// vibration
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = {100, 300, 300, 300};
v.vibrate(pattern, -1);
int resourceImage = getResources().getIdentifier(remoteMessage.getNotification().getIcon(), "drawable", getPackageName());
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder.setSmallIcon(R.mipmap.betterme);
} else {
builder.setSmallIcon(R.mipmap.betterme);
}
Intent resultIntent = new Intent(this, SplashScreen.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentTitle(remoteMessage.getNotification().getTitle());
builder.setContentText(remoteMessage.getNotification().getBody());
builder.setContentIntent(pendingIntent);
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getNotification().getBody()));
builder.setAutoCancel(true);
builder.setOngoing(true);
builder.setPriority(NotificationCompat.PRIORITY_MAX);
builder.setSound(notification);
mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "Your_channel_id";
NotificationChannel channel = new NotificationChannel(
channelId,
"Channel human readable title",
NotificationManager.IMPORTANCE_HIGH);
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build();
channel.setSound(notification, audioAttributes);
mNotificationManager.createNotificationChannel(channel);
builder.setChannelId(channelId);
}
mNotificationManager.notify(100, builder.build());
}
}
first image
second image
如果我没理解错的话,你想要一个提醒通知。
请注意,android 系统决定何时将通知设置为提醒通知并拥有最终决定权 - 而不是开发者。在这里你可以找到一些例子:https://developer.android.com/guide/topics/ui/notifiers/notifications#Heads-up
确保您的设置反映了这些。从您的示例来看,情况似乎是这样,但也许您已经更改了通知渠道设置(从应用程序设置),这会覆盖您的代码首选项(用户优先于应用程序)。
此外,请注意,如果您向上(而不是横向)滑动抬头通知,Android 会开始一段冷静时间,该应用会在几秒钟内不显示任何抬头通知(或者更多)。您也可以使用 Telegram 或任何其他应用程序进行尝试。冷静时间过后,它会再次出现,就像提醒通知一样。这是 Android 用来防止应用程序对用户造成干扰的一种方式。
通知中似乎没有问题。但是您的频道已经创建并带有正常通知,您将 NotificationChannel 更新为 IMPORTANCE_HIGH
。
Once the channel is created with priority it cannot be changed
。所以您可以更改频道ID或卸载并重新安装并测试它。