移动推送 Android : Android 8.0 以上设备通知接收不到?
阿里云移动推送自v3.1.1版本开始支持NotificationChannel机制,以下是接入步骤: 3.1 集成新版 集成移动推送SDK v3.1.1及其以上版本 集成服务端OpenApi SDK v3.9.0及其以上版本:
com.aliyun aliyun-java-sdk-push 3.9.0 3.2 注册NotificationChannel 在客户端创建自己的NotificationChannel,可参考下面代码 具体调用位置为:Application的onCreate,云推初始化前后都可以,可参考 Demo
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 通知渠道的id
String id = "1";
// 用户可以看到的通知渠道的名字.
CharSequence name = "notification channel";
// 用户可以看到的通知渠道的描述
String description = "notification description";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// 配置通知渠道的属性
mChannel.setDescription(description);
// 设置通知出现时的闪灯(如果 android 设备支持的话)
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
// 设置通知出现时的震动(如果 android 设备支持的话)
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
//最后在notificationmanager中创建该通知渠道
mNotificationManager.createNotificationChannel(mChannel);
}
3.3 利用OpenApi推送 服务端推送时指定其NotificationChannelid,可参考如下代码:
@Test
public void testAdvancedPush() throws Exception {
PushRequest pushRequest = new PushRequest();
// 推送目标
pushRequest.setAppKey(appKey);
pushRequest.setTarget("DEVICE"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
pushRequest.setTargetValue("xxxxxxxxxxxxxxx");
pushRequest.setPushType("NOTICE"); // 消息类型 MESSAGE NOTICE
pushRequest.setDeviceType("ANDROID"); // 设备类型 ANDROID iOS ALL.
// 推送配置
pushRequest.setTitle("ALi Push Title"); // 消息的标题
pushRequest.setBody("Ali Push Body"); // 消息的内容
// 推送配置: Android
pushRequest.setAndroidNotifyType("BOTH");//通知的提醒方式 "VIBRATE" : 震动 "SOUND" : 声音 "BOTH" : 声音和震动 NONE : 静音
pushRequest.setAndroidOpenType("APPLICATION"); //点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
// 指定notificaitonchannel id
pushRequest.setAndroidNotificationChannel("1");
......
}
3.4 利用阿里云控制台推送 使用阿里云控制台推送通知时,需要设置 “高级设置”,在最下面的 “Android8.0 特殊配置:” ,填写 “通知通道:”,也就是上述客户端注册的 NotificationChannel 的 id,如下图所示: 3.5 NotificationChannel注意事项 指定NotificationChannel后,通知的提醒方式(震动、声音等)均为NotificationChannel所指定的提醒方式,服务端的提醒方式配置不再生效。 NotificationChannel的通知权限,一般品牌是默认给权限的,但是oppo和vivo默认不给权限,需要开启权限。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。