本帖最后由 52yaoer 于 2018-10-12 07:43 编辑
阿里移动推送Android SDK: Android 8.0以上设备通知接收不到?
1. 问题在Andorid 8.0以上的设备集成推送SDK后,推送接收不到,日志显示通知已经从服务端发送到客户端,但是并未创建通知,这是怎么回事?应该如何解决? 2. 问题原因自8.0(API Level 26)起,Android 推出了NotificationChannel机制,旨在对通知进行分类管理。如果用户App的targetSdkVersion大于等于26,且并未设置NotificaitonChannel,创建的通知是不会弹出的。 3. 解决方案
3.1 上传自定义模块包notifyChannelModule(见附件).
3.2 调用createNotificationChannel注册NotificationChannel(见模块文档).
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("APPLIACTION"); //点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
- // 指定notificaitonchannel id
- pushRequest.setAndroidNotificationChannel("1");
- ......
- }
复制代码
|