前提:产品投放于国外市场,投放于Google Paly,开发在国内。运营只需要在小米控制台进行小米推送,不需要服务器配合。
遇到问题
①(一开始对接问题) 一直不展示通知消息
② 在通知栏只展示一条通知信息
③ 小米推送部分手机不展示,部分手机展示
④ 在接收消息的广播里设置打开新界面,发现没有作用
⑤ 探究小米推送,在彻底关闭应用后,小手机接收到通知栏消息后是否激活了APP
解答
① 对于第一个问题,基本是自己没有按照文档里的介绍,一步一步的写下去,比如 :
(1)在build.gradle中applicationId没改
(2) AndroidManifest.xml文件中permission和receiver没有按照对应的包名修改
② 小米在管理控制台,创建推送消息时

通知类别 没有添加,我们都知道,自定义通知栏是 notificationId如果不设置,消息就会覆盖之前的,这个功能是一样的。不填写一直就是同一个。
在这里说一下个人对通知栏消息和透传消息的理解,
通知栏消息:如果服务器不修改,当客户端收到消息时,通知栏是自动生成的,客户端是不能自定义通知了的。而自定义设置和展示多个通知栏效果是由服务器控制的,详情请看服务器java SDK ,有关于展示多个通知栏和自定义通知栏的介绍
透传消息

通过测试效果看是小米广播的

onNotificationMessageArrived()

onNotificationMessageArrived()方法接收到控制台的消息后,不会展示通知栏信息,只能通过客户端自己自定义通知栏。
③ 部分手机收不到消息,这个真的让我浪费了好长时间,联系客服,发邮件,加QQ群,都没有解决,好像小米推送对于客服这块真的没有极光推送做的好,基本联系不上人。
原因 因为我们公司的产品投放到国外市场,所以有部分测试机是国外买回来的,也有一部分是国产的,在demo测试时我用的中文推送运营平台发送的通知,只有国内手机可以接收到,国外手机是接收不到的,在连接外网,当语言设置成英文,再次推送是只有国外购置的手机可以接收推送消息,国内手机反而收不到了,真是神奇了。
④ 这个就是我个人技术不到家了
我们在 广播BroadcastReceiver或者服务里设置Intent 跳转
不能直接简单的 start 一个 new 出来的 Activity
需要设置 setFlags 同时还要兼顾跳转出新的Activity后能够在返回时不会返回到原来的界面。因此需要如下设计:

Intent intent = new Intent(context, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intent);

同时在AndroidManifest.xml 中的MainActivity类中设置启动模式:android:launchMode=“singleTask”
动态设置了之后静态的设置就不执行了
如此的话我们就可以在MainActivity下

 @Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);// 执行新数据操作}

稍微介绍下android 的四种启动模式,巩固一下知识:

  1. Standard 标准模式 默认情况下就是这个,不setFlags就一直的创建新的实例入栈 <<A-B-C 创建A activity后 A-B-C-A>>
  2. SingleTop 栈顶复用模式 ①如果跳转的Activity已存在,并在栈顶,启动模式为SingleTop 模式,则直接复用,onCreate、onStart不会被系统调用,会调用新的方法 onNewIntent,在这里可以进行一系列操作在<<A-B-C C activity里再创建C activity A-B-C>> ② 如果跳转的Activity已存在,但不在栈顶,启动模式为SingleTop 模式,会又一次创建一个新的Activity入栈,同Standard模式一样 <<A-B-C C activity里再创建a activity A-B-C -A >>
  3. SingleTask 栈内复用模式 若须要创建的Activity已经处
    于栈中时,此时不会创建新的Activity,而是将存在栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。
    ①如果跳转的Activity已存在,并在栈顶,启动模式为SingleTask 模式,直接用栈顶的C 的activity <<A-B-C C activity里再创建C activity A-B-C>>
    ② 如果跳转的Activity已存在,但不在栈顶,启动模式为SingleTask 模式,则会跳转到指定的Activity,并把其上面的Activity都销毁 <<D activity里再创建B activity A-B-C-D 变为 A-B >>
  4. SingleInstance 单实例模式 具有此模式的Activity仅仅能单独位于一个任务栈中,例如 – A Activity是该模式,启动A后。系统会为它创建一个单独的任务栈,由于栈内复用的特性。兴许的请求均不会创建新的Activity,除非这个独特的任务栈被系统销毁。

上面的结果里有setFlags(),我们或许还见过 addFlags(),到底setFlags()和addFlags()有什么区别,如何使用么?
两个方法的区别是
setflag是直接给intent设置新的flag,
addflag是在已有flag上添加新的flag

稍微介绍下 onNewIntent(Intent intent)方法
当我们在activity的启动模式中设置为栈内唯一时,也就是android:launchMode=”singleTask”或android:launchMode=”signleTop”时,会用到这个方法。
比如说在一个应用中A activity 跳转至 B activity 在跳转至 C activity 然后C做了一定的操作之后再返回A 界面。这样在A activity的启动模式设置为singleTask后。C界面跳转至A界面时,就会去判断栈内是否有改Activity实例,如果有就直接执行A界面的onNewIntent()方法,我们就可以把逻辑处理放在改生命周期方法中,如果没有就会走Activity的oncrate方法去创建实例。在内存吃紧的情况下,系统可能会kill掉后台运行的 Activity ,如果不巧要启动的那个activity实例被系统kill了,那么系统就会调用 onCreate 方法,而不调用 onNewIntent 方法。

⑤ 经测试,在小米手机上,彻底杀死应用时,推送通知栏消息,在小米接收广播的onNotificationMessageArrived()方法中,没有查看到设置的log信息,只有在APP运行的情况下才能打印出log信息,推测通知栏信息的获取应该是类似系统级别的,不能通过发送通知消息来激活APP

小米推送的那些坑 :有的手机能收到推送,有的收不到,通知栏只能显示一个。。。。。相关推荐

  1. 友盟推送小米手机通知栏图标显示问题

    最近发现小米手机通知栏的icon显示成了一个灰色的方块, 如图所示 发现友盟不支持自定义通知图标 意思是 小米的设备,是无法自定义图标的,这个显示的默认图标是无法进行修改的. 我自己按照小米推送的推送 ...

  2. android小米推送,酸了!小米手机Android 10推送安排上了

    酸了!小米手机Android 10推送安排上了 2019年08月24日 14:50作者:姜恒编辑:陈浩天文章出处:泡泡网原创 分享 8月24日消息,小米手机9发布基于Android 10的MIUI 9 ...

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

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

  4. miui android 9q,小米 9 MIUI Android Q Beta 优先体验版正式推送:轻松升级

    7 月 11 日,小米 MIUI 官微宣布,小米 9 MIUI Android Q Beta 优先体验版现已推送!已获得测试资格的小伙伴已经可以升级体验. 换言之已经获得资格的小米 9 用户现在就可以 ...

  5. mix2 android 8,小米MIX2升级Android 8.0 手势操作将一同推送

    小米最初以MIUI起家,其可玩程度极高也成就了"为发烧而生"的精神.MIUI实为基于Android定制的手机系统,但其个性化体验.功能丰富程度和易用实用度远超原生Android,除 ...

  6. 小米9android q测试版,小米9 MIUI Android Q Beta优先体验版正式推送:轻松升级

    7 月 11 日,小米MIUI官微宣布,小米9 MIUI Android Q Beta优先体验版现已推送!已获得测试资格的小伙伴已经可以升级体验. 换言之已经获得资格的小米 9 用户现在就可以尝鲜下载 ...

  7. 小米8系统推送服务器,小米8终于要升级MIUI10稳定版了,你收到推送了吗?

    原标题:小米8终于要升级MIUI10稳定版了,你收到推送了吗? 伴随着小米8的发布,小米也同时在5月31日正式发布了MIUI10系统,但是很多网友却反映一直没有收到稳定版本的系统推送,感到十分的不爽! ...

  8. 小米2s Android pie,抢先体验Android Pie 小米MIX 2s已收到推送

    原标题:抢先体验Android Pie 小米MIX 2s已收到推送 [ [IT168 手机讯]就在北京时间8月7日凌晨,谷歌推送了Android 9.0的正式版,并将其命名为"Pie&quo ...

  9. 服务器端往手机端推送数据的问题(手机解决方案)

    1.方案一: 思路:使用socket连接,在手机端开个socketserver,然后服务器端连接手机端,实现服务器端的不定时发送数据. MIDlet关闭时, 你可以通过sms激活它. midlet运行 ...

最新文章

  1. Window10安装pycocotools
  2. python储存在ftp_python实现FTP
  3. Vitya and Strange Lesson (01字典树)
  4. python基础面试都问什么问题_基本 Python 面试问题
  5. 更高效地刷OJ——String常用方法(一)
  6. Carryon的字符串
  7. 2021-07-03图标,选择框
  8. VMware虚拟机Centos7配置双网卡双IP踩坑
  9. python如何运行js代码
  10. MQTT从入门到放弃
  11. 逆Laplace数值逆变换
  12. 施耐德 m340 编程手册_工控安全研究系列(一)施耐德PLC 140CPU 65150
  13. creo绘图属性模板_creo完整制作工程图模板.docx
  14. mac 安装消息中间件---ActiveMQ
  15. 2022年大一学生实训作业【基于HTML+CSS制作中华传统文化传统美德网站 (6页面)】
  16. 关闭QQ弹出的腾讯网迷你版
  17. 胶囊网络之 Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsules论文笔记
  18. 以艺术教育培养大学生艺术素质
  19. 如何删除电脑上一些恶意安装软件?
  20. (转载)JDO快速入门(原理详解)

热门文章

  1. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
  2. [unknown OJ] ZZH与计数
  3. excel首行固定_EXCEL 一个工作表如何快速拆分多个工作表的方法
  4. 新加坡计算机金融专业,新加坡金融专业为何如此热门?
  5. 树莓派frp服务器和客户端配置教程
  6. 单链表之复杂链表的复制(C语言版)
  7. 基于JavaFx的多线程葫芦娃打斗游戏
  8. YOLOV5中添加Task-Specific Context Decoupling
  9. Window系统打包QT程序
  10. 斯坦福大学iOS开发公开课总结