我正在尝试创建一个多行通知,如Gmail应用程序所示,如下图所示(5个通知分组在一个通知下)
我尝试了各种示例,但似乎只能创建单个通知
public void createSingleNotification(String title, String messageText, String tickerttext) {
int icon = R.drawable.notification_icon; // icon from resources
CharSequence tickerText = tickerttext; // ticker-text
long when = System.currentTimeMillis(); // notification time
Context context = getApplicationContext(); // application Context
CharSequence contentTitle = title; // expanded message title
CharSequence contentText = messageText; // expanded message text
Intent notificationIntent = new Intent(this, MainActivity.class);
Bundle xtra = new Bundle();
xtra.putString("title", title);
xtra.putString("message", messageText);
notificationIntent.putExtras(xtra);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_ONE_SHOT
+ PendingIntent.FLAG_UPDATE_CURRENT); …
Run Code Online (Sandbox Code Playgroud) 在 Android Nougat 及更高版本中,应用的推送通知会在 #4th 之后自动组合在一起。
Android 中的问题是单击捆绑包不会展开推送通知列表,而是打开应用程序。
我需要识别通过推送通知打开应用程序的用户。对于单个通知,这很容易,因为我可以探索意图附加功能。捆绑包的问题在于 extras 为空,并且意图看起来与用户单击启动器图标完全相同。我无法检测到导航是通过推送通知完成的 :(
以防万一不清楚:我没有明确使用推送通知组,这是由 Android 自动完成的。我没有为通知设置任何组密钥。
我正在使用 Firebase。我只NotificationCompat
在应用程序在前台时使用构建推送通知,当应用程序在后台或关闭时不执行此逻辑(OnMessageReceived
仅在应用程序在前台运行)。
编辑
我知道OnMessageReceived
即使在后台或关闭时,我也可以更改正在执行的事件的 PN 有效负载。我想避免这种情况,因为我发现很多人抱怨在这种情况下无法到达 PN 的问题。
http://github.com/firebase/quickstart-android/issues/368
http://github.com/firebase/quickstart-android/issues/219
即使应用程序没有创建它,我也想检测用户点击分组的 PN。