应用集成小米华为推送问题总结
应用集成小米华为推送问题总结
- 前言
- 华为角标
- 华为小米点击通知栏指定intent问题
- 华为小米清除离线通知栏问题
前言
最近在做推送相关的事情,总体来讲就是希望一个IM类的应用达到离线可以收到推送的效果,最开始考虑使用第三方推送友盟,后来发现有一些功能友盟没有实现,例如华为的角标问题,所以决定分别单独集成华为和小米的push功能,以下是集成中遇到的各种“疑难杂症”,如果有幸可以帮到困扰中的你,我很开心。
华为角标
华为的官方文档很让人头大,因为很多东西已经更新了,但是旧的文档说明却没有改,例如我们一直在研究,华为究竟是否支持离线情况下收到通知的时候收到角标呢?文档如下说:
可是它真的不支持吗?后来我们的服务端加了华为开发者的一个群,问了里面的技术人员,支持!
所以离线情况下只需要在服务端加入华为官方提供的方法,以及客户端的入口activity,是可以解决的。
在线情况下需要客户端加入华为官方提供的角标接口:
private void setBadgeNum(int num) {try{Bundle bundle = new Bundle();bundle.putString("package","你的包名");bundle.putString("class","你的入口activity");bundle.putInt("badgenumber",num);this.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bundle);}catch (Exception e){mIsSupportedBade = false;}}
在需要添加和清除角标的时候分别调用,例如setBadgeNum(未读消息数);和setBadgeNum(0);
华为小米点击通知栏指定intent问题
由于我们的应用既有IM类聊天又有推送等消息,所以我们希望不同的消息对应着不同的tab,这就需要用到指定intent的问题,为此华为和小米都提供了多项选择,
1 打开当前app对应的Launcher Activity
2 打开当前app内的任意一个Activity
3 打开网页
我们做的是2,打开任意一个activity,而且我们不仅要打开,还有传一些参数,当然这里需要服务端和客户端的配合,请好好阅读官方文档,
小米客户端
小米服务端
关于这个服务端需要填写的"intent:#Intent;component=com.xiaomi.mipushdemo/.NewsActivity;end"是怎么获得的,需要客户端在代码中做一个小demo,通过打印的日志看到具体的格式告诉服务端人员如何填写
小米
private String test(){Intent intent = new Intent();intent.setClass(当前activity.this,当前activity.class);//你需要携带的数据intent.putExtra(key,value);intent.putExtra(key2,value2);String uri = intent.toUri(Intent.URI_INTENT_SCHEME);return uri;}
可以选择在你的onCreate中调用,这样就可以在运行的时候看到打印的log,将格式告诉服务端,这里携带的数据如果是int型的,key值会是i.key,如果是字符串类型,key值会是S.key。
华为
当服务端人员填好将其发送给客户端,我们完成点击通知栏的动作时,我们会得到一个intent
Intent intentt = getIntent();
//小米会得到一个mipushmessage对象,我们可以看到mipushmessage方法中有toString(),toBundle()等方法,可根据自己选择解析出携带的数据
MiPushMessage miPushMessage = (MiPushMessage)intentt.getSerializableExtra(PushMessageHelper.KEY_MESSAGE);
//华为可以直接进行解析
Integer tab = intentt.getIntExtra(key,defaultValue);
还有两点需要注意的是
1 getIntent的问题,要注意你的activity中getIntent的顺序,如果你一直获取不到mipushmessage对象,很可能是你前面调用了getIntent
2 华为程序调用的顺序可能会导致你的程序进入指定activity又弹回去,具体可看华为推送点击跳转页面后自动关闭
华为小米清除离线通知栏问题
是这样的,你的app可能一直在使用长连接的功能,因此在在线的状态时,它有正常的通知栏消息
当你收到一份离线消息,点击app进入APP, 此时你的在线消息的通知栏也会出现,你的离线通知栏如果不消失的话,岂不是重复了嘛?是bug,因此我们希望点击app进入的时候,可以把刚才系统推送来的离线通知栏清除掉,具体方法如下:
(可以在你的application中进行)
华为
NotificationManager nm =(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancelAll();
小米
clearNotification(this);//这个clearNotification是MiPushClient中的API,import即可调用
以上是清除全部通知栏的方法,你也恶意选择对应id的消息进行清除,具体方法官网文档里有,请细看!
应用集成小米华为推送问题总结相关推荐
- Android集成小米华为推送以及收不到离线消息的坑
华为推送 1.应用被杀后,无法收到透传消息? 应用被杀死后,无法收到透传消息,再手动打开app,也收不到之前发送的消息,像有的第三SDK,应用被杀后,再打开app,还可以收到之前的离线消息,华为推送不 ...
- 【Java集成小米消息推送(海外版)】
Java集成小米消息推送(海外版) 注册登录: 小米推送运营中心 提交需要的信息,一般为包名等信息(或直接让Android开发提交) 需要的配置信息 1.App Secret 2.Package na ...
- java设置铃声_APP集成小米消息推送自定义铃声设置
正 文: 目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管 ...
- app推送以及提示音java,APP集成小米消息推送自定义铃声设置
目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管你的APP ...
- Java 集成小米消息推送
一:添加依赖(是本地项目maven 仓库) <dependency> <groupId>com.xiaomipush.sdk</groupId&g ...
- 安卓端华为推送集成笔记
华为推送集成笔记 华为推送 示例代码 https://developer.huawei.com/consumer/cn/doc/development/HMS-Examples/push-androi ...
- android 华为推送sd卡,华为推送通道集成指南
1. 华为推送通道集成指南 华为推送通道是由华为官方提供的系统级推送通道.在华为手机上,推送消息能够通过华为的系统通道抵达终端,并且无需打开应用就能够收到推送.使用此功能必须先集成信鸽3.2.1-be ...
- 友盟推送集成小米华为通道
在集成友盟推送的时候,小米和华为对后台进程做了诸多限制.若使用一键清理,应用的channel进程被清除,将接收不到推送.为了增加推送的送达率,可选择接入小米托管弹窗功能.通知将由小米系统托管弹出,点击 ...
- 友盟推送集成小米华为魅族系统通道
前言 大家做过安卓推送服务的都知道,如果安卓设备想要收到推送,就要与服务器建立一个长连接通道(莫非你想轮询??).一旦app被杀掉,维持长连接通道的pushservice服务也会被干掉,所以设备就处于 ...
最新文章
- Jquery实战_读书笔记1—选择jQuery
- java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
- Response.Redirect 编码的问题
- word2vec训练词向量 python_使用Gensim word2vector训练词向量
- 一汽奔腾b7o价位_全新奔腾B70正式上市,前脸被吐槽酷似某豪华品牌
- 使用Koa2重构博客项目
- 阿里Java开发手册(2021最新终极版) 编程必备
- TestStand 语言配置文件说明
- 朋友圈集赞万能截图生成器微信小程序源码下载
- JavaScript中 切割截取字符串的几种方法
- 贝叶斯估计、最大似然估计、最大后验概率估计
- (II)第二节:HelloWordl 案例
- 放弃了又何需执着 ?
- 杭电acm 1214 圆桌会议(冒泡排序)
- 利用FTP将Linux文件备份到Windows
- vc++拾遗(7)-框架、视图、文档
- 图片和图形之硬件加速(7)
- 「Java面试题精华集」1w字的Java集合框架篇(2022最新版)附PDF版
- 手撸一个torch——day1——numba和flake8
- 区块链学习(3) 以太坊测试环境编译并部署智能合约(mac版)