应用集成小米华为推送问题总结

  • 前言
    • 华为角标
    • 华为小米点击通知栏指定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的消息进行清除,具体方法官网文档里有,请细看!

应用集成小米华为推送问题总结相关推荐

  1. Android集成小米华为推送以及收不到离线消息的坑

    华为推送 1.应用被杀后,无法收到透传消息? 应用被杀死后,无法收到透传消息,再手动打开app,也收不到之前发送的消息,像有的第三SDK,应用被杀后,再打开app,还可以收到之前的离线消息,华为推送不 ...

  2. 【Java集成小米消息推送(海外版)】

    Java集成小米消息推送(海外版) 注册登录: 小米推送运营中心 提交需要的信息,一般为包名等信息(或直接让Android开发提交) 需要的配置信息 1.App Secret 2.Package na ...

  3. java设置铃声_APP集成小米消息推送自定义铃声设置

    正 文: 目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管 ...

  4. app推送以及提示音java,APP集成小米消息推送自定义铃声设置

    目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管你的APP ...

  5. Java 集成小米消息推送

    一:添加依赖(是本地项目maven 仓库) <dependency>             <groupId>com.xiaomipush.sdk</groupId&g ...

  6. 安卓端华为推送集成笔记

    华为推送集成笔记 华为推送 示例代码 https://developer.huawei.com/consumer/cn/doc/development/HMS-Examples/push-androi ...

  7. android 华为推送sd卡,华为推送通道集成指南

    1. 华为推送通道集成指南 华为推送通道是由华为官方提供的系统级推送通道.在华为手机上,推送消息能够通过华为的系统通道抵达终端,并且无需打开应用就能够收到推送.使用此功能必须先集成信鸽3.2.1-be ...

  8. 友盟推送集成小米华为通道

    在集成友盟推送的时候,小米和华为对后台进程做了诸多限制.若使用一键清理,应用的channel进程被清除,将接收不到推送.为了增加推送的送达率,可选择接入小米托管弹窗功能.通知将由小米系统托管弹出,点击 ...

  9. 友盟推送集成小米华为魅族系统通道

    前言 大家做过安卓推送服务的都知道,如果安卓设备想要收到推送,就要与服务器建立一个长连接通道(莫非你想轮询??).一旦app被杀掉,维持长连接通道的pushservice服务也会被干掉,所以设备就处于 ...

最新文章

  1. Jquery实战_读书笔记1—选择jQuery
  2. java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
  3. Response.Redirect 编码的问题
  4. word2vec训练词向量 python_使用Gensim word2vector训练词向量
  5. 一汽奔腾b7o价位_全新奔腾B70正式上市,前脸被吐槽酷似某豪华品牌
  6. 使用Koa2重构博客项目
  7. 阿里Java开发手册(2021最新终极版) 编程必备
  8. TestStand 语言配置文件说明
  9. 朋友圈集赞万能截图生成器微信小程序源码下载
  10. JavaScript中 切割截取字符串的几种方法
  11. 贝叶斯估计、最大似然估计、最大后验概率估计
  12. (II)第二节:HelloWordl 案例
  13. 放弃了又何需执着 ?
  14. 杭电acm 1214 圆桌会议(冒泡排序)
  15. 利用FTP将Linux文件备份到Windows
  16. vc++拾遗(7)-框架、视图、文档
  17. 图片和图形之硬件加速(7)
  18. 「Java面试题精华集」1w字的Java集合框架篇(2022最新版)附PDF版
  19. 手撸一个torch——day1——numba和flake8
  20. 区块链学习(3) 以太坊测试环境编译并部署智能合约(mac版)

热门文章

  1. 后端基础入门技术栈简单小结(非常简单)
  2. 一文跑通腾讯地图demo
  3. mysql日志文件在哪_linux中mysql日志文件在哪里?
  4. 1461:Beads
  5. 数据库关系模型的三类完整性约束
  6. 深入理解java的finalize
  7. 解决Axure RP Extension for Chrome 安装问题
  8. PHP封装curd,ThinkPHP5.0的模型CURD创建Create操作
  9. Android挂逼修练之行---微信中把朋友圈封面设置成酷炫视频功能插件开发详解
  10. 阿里云和华为云谁更牛逼