发表于: 2018-12-31 23:52:01

0 844


今天完成的事情

Android O 引入了 通知渠道(Notification Channels),以提供统一的系统来帮助用户管理通知,如果是针对 android O 为目标平台时,必须实现一个或者多个通知渠道,以向用户显示通知。若并不以 Android O 为目标平台,当应用运行在 android O 设备上时,其行为将与运行在 Android 7.0 上时相同。

开发者可以为需要发送的每个不同的通知类型创建一个通知渠道。还可以创建通知渠道来反映应用的用户做出的选择。例如,可以为聊天应用的用户创建的每个聊天组建立单独的通知渠道。

Android O 的用户可以使用一致的系统 UI 管理大多数与通知有关的设置。所有发布至通知渠道的通知都具有相同的行为。当用户修改任何下列特性的行为时,修改将作用于通知渠道:

重要性、声音、光线、振动、在锁屏上显示、替换免打扰模式。

用户可以访问 Settings(右划一段距离通知可以看到Settings),或长按通知来更改这些行为,甚至可以随时屏蔽通知渠道。一旦在创建完某个通知渠道并将其提交到通知管理器后,便无法通过编程方式修改通知渠道的行为,这些设置由用户掌控。

Android O 弃用了为单个通知设置优先级的功能。创建通知渠道时可以设置建议重要性级别。为通知渠道指定的重要性级别适用于发布至该渠道的所有通知消息。可以配置五个级别中的一个,这些级别代表着通知渠道可以打断用户的程度,范围是 IMPORTANCE_NONE(0)至 IMPORTANCE_HIGH(4)。默认重要性级别为 3:在所有位置显示,发出提示音,但不会对用户产生视觉干扰。创建通知渠道后,只有系统可以修改其重要性。用户可以在设置中找到。


(1)构建一个在软件包内具有唯一 ID 的通知渠道对象。

(2)为该通知渠道对象配置所需的任何初始设置(例如提示音以及对用户可见的可选说明)。

(3)将通知渠道对象提交到通知管理器。

如果试图使用初始值创建的通知渠道已存在,不会执行任何操作,因此启动应用时可以放心地执行以上步骤序列。

 mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
       // 通知渠道的id
       String id "my_channel_01";
      // 用户可以看到的通知渠道的名字.
       CharSequence name = getString(R.string.channel_name);
      // 用户可以看到的通知渠道的描述
  String description = getString(R.string.channel_description);
       int importance = NotificationManager.IMPORTANCE_HIGH;
       NotificationChannel mChannel new NotificationChannel(idnameimportance);
       // 配置通知渠道的属性
   mChannel.setDescription(description);
       // 设置通知出现时的闪灯(如果 android 设备支持的话)
   mChannel.enableLights(true);
       mChannel.setLightColor(Color.RED);
      // 设置通知出现时的震动(如果 android 设备支持的话)
   mChannel.enableVibration(true);
       mChannel.setVibrationPattern(new long[]{100200300400500400300200400});
     //最后在notificationmanager中创建该通知渠道
       mNotificationManager.createNotificationChannel(mChannel);

可以通过调用 createNotificationChannels(List < NotificationChannel > channels)一次性创建多个通知渠道。


要创建通知,需调用 Notification.Builder.build(),它返回的 Notification对象包含的指定值。要发出通知,需通过调用 [notify()](https://developer.android.google.cn/reference/android/app/NotificationManager.html#notify(int, android.app.Notification))

将 Notification对象传递给系统。创建的通知Notification对象必须包含以下内容:

小图标,由 setSmallIcon()设置

标题,由 setContentTitle()设置

详细文本,由 setContentText()设置

有效的通知渠道 ID,由 setChannelId()设置

如果 应用是以 Android O 为目标平台并且在不指定有效通知渠道的情况下发布通知,那么通知将无法发布,系统会记录错误。

注意:可以在 Android O 中启用一个新设置,当针对 Android O 的应用试图在没有通知渠道的情况下发布时,以 toast 形式显示屏幕警告。要为运行 Android O 的开发设备启用该设置,请转到 Settings > Developer options,然后打开 Show notification channel warnings。

明天的计划

生成多渠道APK

收获

通知渠道(Notification Channels)




返回列表 返回列表
评论

    分享到