概述

移动推送Android SDK支持用户自定义通知样式,用户可以设定自己的通知样式,涉及的内容包括通知的提醒方式(声音、震动、静默),通知在状态栏的显示图标,推送消息应用内到达时是否创建通知以及自定义通知布局文件等。

注意

SDK V2.3.3及以上版本支持自定义样式通知。

客户端设置通知样式

用户利用SDK提供的自定义通知样式接口创建自定义样式通知。SDK中有两个自定义样式通知类:

  1. BasicCustomPushNotification:支持用户设置基础样式,包括提醒方式、状态栏图标以及当推送消息到达时应用处于前台的情况下是否创建该通知等。

  2. AdvancedCustomPushNotification:是BasicCustomPushNotification的子类,继承了BasicCustomPushNotification的所有方法,同时还可以设置通知样式布局文件。

每个样式都需要对应一个特定的整数类型id,如果多个样式设置为同一个ID,则最后设置的样式有效。如果SDK没有找到对应id的样式则会创建默认样式的通知。

样式只需设置一次,SDK会记住这个设置,在需要使用时加载对应样式。具体使用例子请参考Demo

BasicCustomPushNotification代码示例

BasicCustomPushNotification notification = new BasicCustomPushNotification();
notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);
notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);
boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification);

AdvancedCustomPushNotification代码示例

AdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);
notification.setServerOptionFirst(true);
notification.setBuildWhenAppInForeground(false);
boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(2, notification);

后端推送消息时添加自定义样式ID

客户端设置完成后,服务端在推送通知时需要利用OpenAPI指明对应的自定义样ID。

使用OpenAPI推送消息时设定特定样式的ID。

注意

服务端不能设置样式,只能指定需要展现的样式ID,指定id的样式必须在客户端已经进行设置,否则SDK会创建默认样式的通知。

final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");
final String date = dateFormat.format(new Date());
PushRequest pushRequest = new PushRequest();
// 推送目标
pushRequest.setAppKey(appKey);
pushRequest.setTarget("device"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
pushRequest.setTargetValue("deviceId"); 
// 推送配置
pushRequest.setType(1); // 0:表示消息(默认为0), 1:表示通知
pushRequest.setTitle(date); // 消息的标题
pushRequest.setBody("PushRequest body"); // 消息的内容
pushRequest.setSummary("PushRequest summary"); // 通知的摘要
pushRequest.setAndroidNotificationBarType(2);//设置的通知样式ID,通知栏自定义样式范围0-100
// 推送配置: Android
pushRequest.setAndroidOpenType("1"); // 点击通知后动作,1:打开应用 2: 打开应用Activity 3:打开 url
pushRequest.setAndroidExtParameters("{\"_NOTIFICATION_BAR_STYLE_\":\"2\"}");