1. 问题

在Andorid 8.0以上的设备集成推送SDK后,推送接收不到,日志显示通知已经从服务端发送到客户端,但是并未创建通知,这是怎么回事?应该如何解决?

2. 问题原因

自8.0(API Level 26)起,Android 推出了NotificationChannel机制,旨在对通知进行分类管理。如果用户App的targetSdkVersion大于等于26,且并未设置NotificaitonChannel,创建的通知是不会弹出的。

3. 解决方案

阿里云移动推送自v3.1.1版本开始支持NotificationChannel机制,以下是接入步骤:

3.1 集成新版

  • 集成移动推送SDK v3.1.1及其以上版本

  • 集成服务端OpenApi SDK v3.9.0及其以上版本:

    1. <dependency>
    2. <groupId>com.aliyun</groupId>
    3. <artifactId>aliyun-java-sdk-push</artifactId>
    4. <version>3.9.0</version>
    5. </dependency>

3.2 注册NotificationChannel

在客户端创建自己的NotificationChannel,可参考下面代码

具体调用位置为:Application的onCreate,云推初始化前后都可以,可参考 Demo

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);// 通知渠道的idString 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中创建该通知渠道if (mNotificationManager != null) {mNotificationManager.createNotificationChannel(mChannel);}
}

3.3 利用OpenApi推送

服务端推送时指定其NotificationChannelid,可参考如下代码:

  1. @Test
  2. public void testAdvancedPush() throws Exception {
  3. PushRequest pushRequest = new PushRequest();
  4. // 推送目标
  5. pushRequest.setAppKey(appKey);
  6. pushRequest.setTarget("DEVICE"); //推送目标: device:推送给设备; account:推送给指定帐号,tag:推送给自定义标签; all: 推送给全部
  7. pushRequest.setTargetValue("xxxxxxxxxxxxxxx");
  8. pushRequest.setPushType("NOTICE"); // 消息类型 MESSAGE NOTICE
  9. pushRequest.setDeviceType("ANDROID"); // 设备类型 ANDROID iOS ALL.
  10. // 推送配置
  11. pushRequest.setTitle("ALi Push Title"); // 消息的标题
  12. pushRequest.setBody("Ali Push Body"); // 消息的内容
  13. // 推送配置: Android
  14. pushRequest.setAndroidNotifyType("BOTH");//通知的提醒方式 "VIBRATE" : 震动 "SOUND" : 声音 "BOTH" : 声音和震动 NONE : 静音
  15. pushRequest.setAndroidOpenType("APPLIACTION"); //点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
  16. // 指定notificaitonchannel id
  17. pushRequest.setAndroidNotificationChannel("1");
  18. ......
  19. }

注:指定NotificationChannel后,通知的提醒方式(震动、声音等)均为NotificationChannel所指定的提醒方式,服务端的提醒方式配置不再生效

详情可以参考官方文档:https://help.aliyun.com/knowledge_detail/67398.html

阿里云推送:Android8.0及以上收不到推送的解决相关推荐

  1. android23是什么手机,目前 已有23款国产机可升Android8.0 你的手机厂商良心推送了没?...

    原标题:目前 已有23款国产机可升Android8.0 你的手机厂商良心推送了没? 据谷歌公布最新一期的安卓系统占有率统计,安卓8.0的系统依然是寥寥不到1%,和苹果数周内就达到70%以上相差甚远,在 ...

  2. 阿里云centos7自带mysql_阿里云CentOS7部署MySql8.0

    本文主要介绍了阿里云CentOS7如何安装MySql8.0,并对所踩的坑加以记录; 环境.工具.准备工作 服务器:阿里云CentOS 7.4.1708版本; 客户端:Windows 10; SFTP客 ...

  3. 阿里云发布飞天2.0云计算操作系统

    阿里云发布飞天2.0云计算操作系统 1991年,<科学美国人>杂志描绘了一种"无处不在的计算设备,没人会感觉到它的存在",拉开了万物智能的序幕. 27年后的2018杭州 ...

  4. 阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法

    阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法 参考文章: (1)阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法 (2)https://www.cnblogs.com/xi ...

  5. 集成百度云推送,Android8.0系统推送收不到问题解决方案

    因为之前没有集成过百度云推送,接手新项目之后项目需求是接入百度云推送,没办法因为项目是海外项目所以只能硬着头皮来接入了,话不多说开始你的表演: 首先就是去百度云推送的官网去创建应用并启用: .在配置详 ...

  6. 阿里云CDN操控2.0版本正式发布

    简介: 2021年8月,阿里云边缘云CDN完成过去3年来最大的一次版本升级. 2021年8月,阿里云边缘云CDN完成过去3年来最大的一次版本升级.本次升级根据上万企业客户的使用反馈和行业应用特征,从简 ...

  7. 阿里云发布Quick BIV3.0,人人都能轻松进行在线数据分析

    提到BI与OLAP这两个概念,对于很多做数据库的技术人员来说并不陌生.BI随着时代的发展逐渐出现了新型BI和传统型BI的划分,从目前的发展程度来看,传统型BI正在慢慢地衰退,由于传统型BI存在从业门槛 ...

  8. 探寻阿里云服务器迈入2.0时代的技术要点

    在10月15日举行的云栖大会上,阿里云宣布云服务器正式进入2.0时代.根据其官方发布的信息来看,本次ECS服务器在以下方面做了升级 将Xen切换到KVM,同时支持Xen和KVM两大虚拟化系统: 推出了 ...

  9. 阿里云飞天洛神2.0:开放弹性的云网络NFV平台

    云网络架构 阿里云操作系统叫飞天,云网络平台称为洛神.作为飞天系统的核心组件,洛神平台支撑了超大规模租户.超大规模虚拟机的高性能云网络. 洛神平台由很多网络设备组成,在架构上主要可以分为两类:虚拟交换 ...

  10. 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线

    摘要: ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! 它是基于社区HBase2.0稳定版的升级,也是阿里HBase多年的实践经验和技术积累的持续延伸,全面解决了旧 ...

最新文章

  1. 如何实现iframe(嵌入式帧)的自适应高度
  2. three.js 调用网络摄像头
  3. php-fpm linux 权限,nginx/php-fpm及网站目录的权限设置
  4. 「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
  5. Linux系统编程--2(环境变量,进程控制)
  6. C++基础1 数据类型 常量
  7. RTT添加AD驱动代码
  8. 荣获2009年“微软最有影响力开发者”称号
  9. 通过JAVA操作SAE上的MY SQL数据库
  10. 验证二叉树后序遍历序列是否符合要求
  11. 一、基础篇--1.1Java基础-包装类的装箱和拆箱
  12. java中 获取classpath路径
  13. 苹果计算机快捷键设置,苹果电脑怎么改快捷键
  14. 报错Could not find module ‘D:\Anaconda\lib\site-packages\scipy\.libs\
  15. python HEIC2jpg 压缩
  16. 哈希---平方探测法
  17. win下安装mmcv的一些报错
  18. 阿里Java后端开发面经,面试官都替我感到绝望
  19. redis通过key模糊搜索_jedis模糊查询key
  20. win10电脑桌面便签怎么添加

热门文章

  1. 【软件推荐】还用着Windows自带的看图软件吗?
  2. JS === 实现多个光标跟随事件
  3. 【安全】什么是0day漏洞?
  4. ftl有三种映射地址_SSD之FTL技术
  5. CubeMX编写风力摆控制系统[HAL库]
  6. HikariCP对各Java版本的支持
  7. 人机大战!人工智能轻松打败美国空军
  8. dhtml gantt所有配置_dhtmlxGantt
  9. 强大的 Apipost 要取代 Postman 了吗?
  10. android 投影pc,手机高清投影到PC方案