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 没有按预期工作。显然摘要使用SetStyleSetSummaryText。请参阅下面温迪的回答 【参考方案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 ID1。

请注意,如果您使用摘要通知替换相同的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。我想看到一个可折叠的摘要,当展开时会同时显示通知ab。抱歉,如果不清楚,我更新了问题。 感谢您的帮助!我不知道SetSummaryText,这是我最终需要的。

以上是关于Xamarin android 分组通知未被可折叠摘要取代的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Android Nunit测试在测试资源管理器中可被发现,但在运行测试时未被发现。 (VS2017)

Android:折叠通知中的额外间距

如何折叠 Android 通知?

Xamarin:用于 Android 和 Windows UWP 的 Xamarin 表单中的分组列表的垂直字母索引(跳转列表)

android开发如何实现折叠菜单类似qq分组?

Xamarin.Forms Android 推送通知不出现