Xamarin android 分组通知未被可折叠摘要取代
Posted
技术标签:
【中文标题】Xamarin android 分组通知未被可折叠摘要取代【英文标题】:Xamarin android grouped notifications not replaced by collapsible summary 【发布时间】:2020-01-17 13:58:03 【问题描述】:预期/期望的行为:
这两个通知被分组、折叠并被摘要通知替换。展开摘要通知应显示两个单独的通知。实际行为:
这两个通知已分组、折叠,但不会被摘要替换。NotificationCompat.Builder summaryBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
.SetContentText("Notification Summary")
.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
.SetContentTitle("Title summary")
.SetGroupSummary(true)
.SetGroup("GROUP_A")
.SetSmallIcon(Resource.Drawable.icon);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
.SetContentText("Notification a")
.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
.SetContentTitle("Title a")
.SetGroup("GROUP_A")
.SetSmallIcon(Resource.Drawable.icon);
NotificationCompat.Builder notificationBuilderB = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
.SetContentText("Notification b")
.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification))
.SetContentTitle("Title b")
.SetGroup("GROUP_A")
.SetSmallIcon(Resource.Drawable.icon);
var notificationManager = NotificationManager.FromContext(this);
notificationManager.Notify(3, notificationBuilder.Build());
notificationManager.Notify(2, notificationBuilderB.Build());
notificationManager.Notify(1, summaryBuilder.Build());
我尝试过的事情:
使用 NotificationManagerCompat 代替 NotificationManager(没有帮助) 更改Notify
调用的顺序(有趣的是,第一次通知时会显示摘要,但随后会被下一个通知覆盖)。
在其他手机上运行
使用
android 9(或 8) Xamarin.Android v28.0.0.3 Xamarin.Forms 4.3.0我的代码是错误的还是有错误?
【问题讨论】:
事实证明摘要通知不会取代单个通知。所以SetContentText
没有按预期工作。显然摘要使用SetStyle
和SetSummaryText
。请参阅下面温迪的回答
【参考方案1】:
它是由Notification ID
1、2、3 引起的。Notification ID
用于此应用中的所有通知。重复使用通知 ID 可以防止在用户尝试不同的通知设置时创建大量不同的通知——每次启动都会重复使用和更新相同的通知。
notificationManager.Notify(3, notificationBuilder.Build());
notificationManager.Notify(2, notificationBuilderB.Build());
notificationManager.Notify(1, summaryBuilder.Build());
如果您想用摘要通知替换,请使用与摘要通知相同的Notification ID
1。
请注意,如果您使用摘要通知替换相同的Notification ID
,则只有一个摘要通知。
更新:
我希望看到一个可折叠的摘要,当展开时会显示通知 a 和 b。抱歉,如果不清楚,我更新了问题。
如果您想了解更多关于 Summery 通知的信息,您可以使用 SetStyle 和 BigTextStyle 来实现。我制作了一个示例代码供您参考。
Notification notificationA = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
.SetContentText("Notification a")
.SetContentTitle("Title a")
.SetSmallIcon(Resource.Drawable.star)
.SetGroup("GROUP_A")
.SetAutoCancel(true)
.Build();
Notification notificationB = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
.SetContentText("Notification b")
.SetContentTitle("Title b")
.SetSmallIcon(Resource.Drawable.star)
.SetGroup("GROUP_A")
.SetAutoCancel(true)
.Build();
Notification notificationSummery = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
.SetStyle(new NotificationCompat.BigTextStyle().SetSummaryText("Summary Notification"))
.SetSmallIcon(Resource.Drawable.star)
.SetGroup("GROUP_A")
.SetGroupSummary(true)
.Build();
var notificationManager1 = NotificationManager.FromContext(this);
notificationManager1.Notify(1, notificationA);
notificationManager1.Notify(2, notificationB);
notificationManager1.Notify(3, notificationSummery);
【讨论】:
我按照与上面相同的顺序尝试了这个,我得到:第一个通知a
被传递,然后通知b
被传递,然后摘要通知覆盖通知a
(因为它具有相同的 id),并且仅显示通知 b
。我想看到一个可折叠的摘要,当展开时会同时显示通知a
和b
。抱歉,如果不清楚,我更新了问题。
感谢您的帮助!我不知道SetSummaryText
,这是我最终需要的。以上是关于Xamarin android 分组通知未被可折叠摘要取代的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Android Nunit测试在测试资源管理器中可被发现,但在运行测试时未被发现。 (VS2017)
Xamarin:用于 Android 和 Windows UWP 的 Xamarin 表单中的分组列表的垂直字母索引(跳转列表)