问题背景
App安装在安卓8.0以上时需要主动创建NotificaitonChannel。如果没有创建,那么通知会被系统静默,不会弹出显示。 推送时OpenAPI高级接口 中的AndroidNotificationChannel参数值应该和app端代码创建的channelId参数值保持一致。若不一致,也不会弹出通知。
Channel创建
App端开发者可以在创建通知通道时候指定通道ID,是否震动,是否响铃等。代码示例如下。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // 通知渠道的id。 String channelId = "vibration_sound"; // 这个id值需要给后端开发和运维人员,推送的时候对应 AndroidNotificationChannel 参数。 // 用户可以看到的通知渠道的名字。 CharSequence name = "我的测试通道"; // 用户可以看到的通知渠道的描述。 String description = "我的测试通道"; int importance = NotificationManager.IMPORTANCE_HIGH; NotificationChannel mChannel = new NotificationChannel(channelId, name, importance); // 配置通知渠道的属性。 mChannel.setDescription(description); // 设置通知出现时的闪灯(如果Android设备支持的话)。 mChannel.enableLights(true); mChannel.setLightColor(Color.RED); // 设置通知出现时的震动(如果Android设备支持的话)。 mChannel.enableVibration(true); // 自定义铃声 mChannel.setSound(Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.push_hongbao), Notification.AUDIO_ATTRIBUTES_DEFAULT); mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); // 最后在notificationmanager中创建该通知渠道。 mNotificationManager.createNotificationChannel(mChannel); }
Channel使用
App端侧创建好channel之后保留channelId 的值,服务端推送时需要对齐channel才能达到效果:
更多信息
Channel创建这一步骤中的代码您可以调用多次,即可以创建多个通道分别代表不同含义。比如“只响铃”,“只震动”,“铃声+震动”。
Channel创建这一步骤中创建的channelId 同时也用于OPPO厂商通道自分类消息的私信通道。对接参数也是AndroidNotificationChannel 。
适用于
移动推送
文档内容是否对您有帮助?