首页 > 解决方案 > 如何为 API 级别 16 以上的所有设备发送本地通知?

问题描述

我能够从 firebase 向设备发送通知。但我需要在本地向同一设备发送通知。我使用的是奥利奥版手机。我尝试使用此代码:

 NotificationCompat.Builder b = new NotificationCompat.Builder(this,"150");

    b.setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setWhen(System.currentTimeMillis())
            .setSmallIcon(R.mipmap.ic_launcher)
            .setTicker("Hearty365")
            .setContentTitle("Default notification")
            .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
            .setContentInfo("Info");


    NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(1, b.build());

标签: androidandroid-notifications

解决方案


Android-O 包括通知渠道</p>

    NotificationManager notificationManager = 
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
int notifyId = 1;
String channelId = "some_channel_id";

Notification notification = new Notification.Builder(MainActivity.this)
        .setContentTitle("Some Message")
        .setContentText("You've received new messages!")
        .setSmallIcon(R.drawable.ic_notification)
        .setChannel(channelId)
        .build();

notificationManager.notify(id, notification);

通知渠道

通知通道使我们能够将应用程序发送的通知分组到可管理的组中。一旦我们的通知进入这些通道,我们就不再需要输入它们的功能——因此由用户来管理这些通道。在更改应用程序通知的设置时,将向用户显示以下选项:

从左侧开始,您可以在第一个屏幕中看到我们应用程序的通知设置显示了我们应用程序的通知设置。从这里用户可以:

阻止我们应用程序的所有通知渠道。这意味着来自我们应用程序的通知将永远不会显示在用户设备上如果支持,用户可以声明我们的应用程序通知是否应在 Home 应用程序上显示为徽章我们的应用程序存在的通知类别。从这里用户可以切换这些以启用或禁用一旦用户从第一个屏幕选择通知类别,就可以访问下一个屏幕(中间)。从这里用户可以:

阻止来自此频道的来自我们应用程序的所有通知 在 Home 应用程序中显示来自此频道的通知(如果支持)如最终屏幕截图所示,用户还可以设置来自此频道的通知的重要性。此处选择的选项将说明他们希望在收到通知时如何提示。

我们还可以将通知渠道分组到不同的组中。这样我们就可以在多种应用模式下拥有相同的通知渠道。

例如,我的应用程序可能支持个人和业务模式,或子和父模式——这允许我们提供跨多个组管理通知设置的选项。

这些与我们的通知渠道显示在同一个地方,只是分开到相应的组中。

在旧版本的 Android (pre-O) 上,这些新功能将被完全忽略,因此我们不必担心当前的实现会中断。

现在我们对什么是通知通道有了更多的了解,我想是时候看看我们如何将它们实现到我们的应用程序中了!

探索 Android O:通知渠道


推荐阅读