阿里云推送:Android8.0及以上收不到推送的解决
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
及其以上版本:<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-push</artifactId>
<version>3.9.0</version>
</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推送
服务端推送时指定其NotificationChannel
id,可参考如下代码:
@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");
......
}
注:指定NotificationChannel后,通知的提醒方式(震动、声音等)均为NotificationChannel所指定的提醒方式,服务端的提醒方式配置不再生效
详情可以参考官方文档:
https://help.aliyun.com/knowledge_detail/67398.html
阿里云推送:Android8.0及以上收不到推送的解决相关推荐
- android23是什么手机,目前 已有23款国产机可升Android8.0 你的手机厂商良心推送了没?...
原标题:目前 已有23款国产机可升Android8.0 你的手机厂商良心推送了没? 据谷歌公布最新一期的安卓系统占有率统计,安卓8.0的系统依然是寥寥不到1%,和苹果数周内就达到70%以上相差甚远,在 ...
- 阿里云centos7自带mysql_阿里云CentOS7部署MySql8.0
本文主要介绍了阿里云CentOS7如何安装MySql8.0,并对所踩的坑加以记录; 环境.工具.准备工作 服务器:阿里云CentOS 7.4.1708版本; 客户端:Windows 10; SFTP客 ...
- 阿里云发布飞天2.0云计算操作系统
阿里云发布飞天2.0云计算操作系统 1991年,<科学美国人>杂志描绘了一种"无处不在的计算设备,没人会感觉到它的存在",拉开了万物智能的序幕. 27年后的2018杭州 ...
- 阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法
阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法 参考文章: (1)阿里云虚拟主机针对恶意频繁攻击式访问造成CPU爆满的解决方法 (2)https://www.cnblogs.com/xi ...
- 集成百度云推送,Android8.0系统推送收不到问题解决方案
因为之前没有集成过百度云推送,接手新项目之后项目需求是接入百度云推送,没办法因为项目是海外项目所以只能硬着头皮来接入了,话不多说开始你的表演: 首先就是去百度云推送的官网去创建应用并启用: .在配置详 ...
- 阿里云CDN操控2.0版本正式发布
简介: 2021年8月,阿里云边缘云CDN完成过去3年来最大的一次版本升级. 2021年8月,阿里云边缘云CDN完成过去3年来最大的一次版本升级.本次升级根据上万企业客户的使用反馈和行业应用特征,从简 ...
- 阿里云发布Quick BIV3.0,人人都能轻松进行在线数据分析
提到BI与OLAP这两个概念,对于很多做数据库的技术人员来说并不陌生.BI随着时代的发展逐渐出现了新型BI和传统型BI的划分,从目前的发展程度来看,传统型BI正在慢慢地衰退,由于传统型BI存在从业门槛 ...
- 探寻阿里云服务器迈入2.0时代的技术要点
在10月15日举行的云栖大会上,阿里云宣布云服务器正式进入2.0时代.根据其官方发布的信息来看,本次ECS服务器在以下方面做了升级 将Xen切换到KVM,同时支持Xen和KVM两大虚拟化系统: 推出了 ...
- 阿里云飞天洛神2.0:开放弹性的云网络NFV平台
云网络架构 阿里云操作系统叫飞天,云网络平台称为洛神.作为飞天系统的核心组件,洛神平台支撑了超大规模租户.超大规模虚拟机的高性能云网络. 洛神平台由很多网络设备组成,在架构上主要可以分为两类:虚拟交换 ...
- 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线
摘要: ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! 它是基于社区HBase2.0稳定版的升级,也是阿里HBase多年的实践经验和技术积累的持续延伸,全面解决了旧 ...
最新文章
- 如何实现iframe(嵌入式帧)的自适应高度
- three.js 调用网络摄像头
- php-fpm linux 权限,nginx/php-fpm及网站目录的权限设置
- 「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
- Linux系统编程--2(环境变量,进程控制)
- C++基础1 数据类型 常量
- RTT添加AD驱动代码
- 荣获2009年“微软最有影响力开发者”称号
- 通过JAVA操作SAE上的MY SQL数据库
- 验证二叉树后序遍历序列是否符合要求
- 一、基础篇--1.1Java基础-包装类的装箱和拆箱
- java中 获取classpath路径
- 苹果计算机快捷键设置,苹果电脑怎么改快捷键
- 报错Could not find module ‘D:\Anaconda\lib\site-packages\scipy\.libs\
- python HEIC2jpg 压缩
- 哈希---平方探测法
- win下安装mmcv的一些报错
- 阿里Java后端开发面经,面试官都替我感到绝望
- redis通过key模糊搜索_jedis模糊查询key
- win10电脑桌面便签怎么添加