小米之前说的“小米推送服务器地址”服务还有吗

(4.2.12.3)浅谈第三方推送[bug查询]:百度推送、小米推送、华为推送
我的图书馆
(4.2.12.3)浅谈第三方推送[bug查询]:百度推送、小米推送、华为推送
前言(常见坑):
小心是AndroidManifest文件被别人改动过。。。。。。
升级推送SDK时往往可能会引入新问题。。。。。除非有重大更新,否则可以延迟2个版本进行升级
为了更好应对出问题的用户和测试人员。最好给出推送解决的临时方案,然后再尝试解决问题。
大部分推送问题都是被杀后自启动失败,不同手机系统不同的坑,好好积累。目前大头是魅族,乐视,三星。 (小米和华为已经有定制的推送支持)
功能限制问题——&有可能引发“无回调问题”
手机系统限制软件的通知或自启动
手机的第三方管理[自启动管理,省电管理,通知栏显示限制和一键清理动作等]
应用中关闭了通知、震动,或设置了免打扰时段
没有任何错误信息,调用SDK函数后,无任何响应
往往是PushService服务未启动或回收后不能自启动导致,往往由“功能限制问题”导致
回调错误信息
回调正确但是业务代码错误
往往是前后台判断有问题
2-排查过程
2.1-收不到通知栏通知的排查流程
判断当前的SDK,通过日志记录
业务服务器问题排查
电话联系反馈者,了解未收到通知的信息的时间、类型或内容
根据了解到的信息联系后台服务者,查询是否是有次推送的requestid【没有,则说明是业务服务器未推送;有的话进入下一步排查】
功能限制问题排查
判断是否是手机设置关闭了应用的通知或自启动功能
判断是否是手机安装的第三方管理软件关闭了应用的通知或自启动功能[尤其注意root机]
是否是在应用中“设置”中关闭了通知、震动、声音等,或者设置了免打扰时段,或者登陆了网页版应用
如果是群聊信息,查看是否关闭了群聊信息通知开关
本地信息排查
根据requestid,进入第三方服务后台,或者在相关聊天群,联系第三方技术支持人员,查询该requestid的事件日志
该requestid有事件回馈,证明信息达到了app中,可能是
(1) app业务逻辑有bug,导致通知未弹出(譬如前后台判断,声音设置等)。[排查方法:检测日志,是否收到该信息]
(2) 同时确认[功能问题排查]
(3) 第三方PushService未正确发送广播,未调用我们的Receiver回调。[排查方法:检测日志,是否收到该信息]
该requestid没有事件回馈,说明信息未到达app中,日志中必然没有相关信息
(1) 所智能选择的SDK的PushService服务未启动,或者被回收后不能自动重启【该部分在下面的分类bug中详细描述】
3-通用注意事项
推送收不到或者延时问题
pushService不能启动或回收后不能自启导致的
功能限制问题
手机系统自带或者第三方“自启动管理” 导致PushService不能正常自启动
手机系统自带或者第三方“通知栏显示限制管理” 导致通知栏信息不能正常显示
手机系统自带或者第三方“一键清理动作” 导致PushService不能正常自启动
手机系统自带或者第三方“省电管理” 导致PushService不能正常自启动
应用内的“我-&设置-&消息通知”里面的推送是否被关闭了
应用内的“群聊-&消息通知”的信息通知是否被关闭了
锁屏断网导致无法收到推送,有些手机自带的省电优化会在锁屏后一段时间进入无网络模式[通过app的后台日志可以检测到app的联网状态]
回调正确但是业务代码错误
是否是我们的前后台判断有问题
【重复推送问题】一条通知消息看过后,还会收到该信息的一次或多次重复通知 9552
第三方的PushServer在给运营在客户手机的PushService发送通知后,回收到来自PushService的“回包应答”,如果该回包丢失,则PushServer认为该用户处于离线状态,会将该通知缓存下来,等候一段时间后,再次发送;再次发送成功收到回包,则将该通知移除缓存,否则一直尝试推送。
如果出现通知一再出现的问题,很有可能是“回包应答”丢失所导致的,可将对应requestid交给第三方工作人员协助调查,PushServer是否收到应答
【即时信息查看后,又收到该信息一次通知】 1919
场景:用户在即时聊天界面,收到某条信息A并查看,而后将应用home到后台,在某些状况下,信息A的通知会再次出现在通知栏。
可能性原因1:.第三方推送数据和即时聊天的数据通道是分离的,服务器在推送信息时,会同时向我们应用的信息通道和第三方的推送通道同时推出信息。如果我们通道的信息先到,而第三方推送的通道由于某些原因导致通知延迟,就会出现用户“已阅读该信息,并迅速将应用后台”并且“延迟的第三方通知到达”时,我们应用判断应用在后台,从而将信息A再次显示在通知栏。
目前可行的方法是,将本地各种类型的通知信息加入已阅标志位(已读?已到?),并缓存已阅信息的requestid;待第三方通知再次下发到app,判断是否该通知已被阅读,是的话就不再显示。【待实现】
乐视手机推送问题 9435 待解决
应用和推送都挂了,是不是这个letv的手机系统自带了什么后台限制
4-百度注意事项
应用关闭或结束进程后,还能收到推送吗?
应用退至后台或结束进程,百度云推送的Service会继续在后台运行并接收推送;部分情况下使用安全软件或内存管理工具强制清理后台,Service会被清除,但Push有多种保活机制,会快速重启;在小米和魅族手机上,用户清理后台应用后必须要等到再次打开任意一个集成了PushSDK的app、调用StartWork之后,Service才会在后台启动并继续接收推送。
应用调用startWork绑定,onbind无回调信息返回
往往是由于PushService不能启动或回收后不能自启动导致,原因在于“功能限制问题”。
关注各个系统上自带的或第三方的“功能限制问题”自启动管理,省电管理,通知栏显示限制和一键清理动作等
有其注意,百度推送内置链式推送规则,在启动PushService时,SDK会获取到当前手机中所有继承百度推送的app,并根据优先级由大到小的顺序组成顺序链条,并按照该链条顺序启动对应的PushServices(实质上,它们使用同一交互通道)。在启动过程中,链条任意位置的一个app应设置自启动限制或相互启动限制导致PushService不能启动,将会导致链条后面的app也不能唤醒PushService
系统管理问题
【1】 如果是魅族Flyme5及以上系统手机,因增加主动防御机制,请如下操作:手机管家-权限管理-自启动管理-相互启动-打开pushservice优先级最高的应用(用DetectTools工具查看priority值)和自己应用的相互启动开关,请参考 。
【2】如果是华为EMUI4.0及以上系统手机(华为mate8),因增加关联启动机制,请如下操作:设置—权限管理—关联启动—打开pushservice优先级最高的应用(用DetectTools工具查看priority值)和自己应用的启动开关。(已和华为厂商协商,下个版本会完全兼容)
【3】如果是三星部分5.0及以上系统新机型,因为增加了“自动运行”权限管理,应用在首次安装时,会弹出应用的权限管理提示,“自动运行”权限默认是关闭状态,这种情况下,非pushservice优先级最高的应用会出现绑定无回调信息返回情况,请如下操作:在三星自带的app 智能管理器 中找到:智能管理器-&内存-&自启动应用程序-&打开pushservice优先级最高的应用(在群文件下载DetectTools工具查看priority值)和自己应用的“自动运行”开关。(已和三星厂商协商,后续版本会完全兼容)
【4】如果非以上特殊机型问题,请在云推送官网常见问题或者群文件里面下载DetectTools工具,打开调试模式,跟一下相关日志。(SDK4.6.0及以后的版本日志输出统一使用”BDPushSDK”这个TAG开头,方便查看日志)
【5】如以上步骤仍不能解决问题,联系开发者群云推送技术客服协助解决问题。
第三方管理问题
锁屏断网导致无法收到推送,有些手机自带的省电优化会在锁屏后一段时间进入无网络模式
Android应用调用startWork绑定不成功(即onbind回调信息中errorcod不为0)
如果errorcode=10101,表示集成错误,请用DetectTools工具检查一下集成方式是否正确,如不正确参照修改建议修改,如未有错误提示,请用DetectTools工具打开调试模式,跟一下相关日志,根据日志错误提示进行修改。(常见集成错误问题:so文件集成不正确、manifest文件必须权限声明不正确、apikey设置不正确等)
如果errorcode=10001,表示网络问题,请检查手机网络连接是否正常。注意如果是小米MIUI7.0及以上的系统手机,因增加不允许后台服务长时间联网特性,请如下操作:设置-其他高级设置-电量和性能-神隐模式-关闭。(已和小米厂商协商,后续版本会完全兼容)
如果是其他错误码,请参考云推送官网或者用户手册中“错误码说明”进行相关问题排查。
如以上步骤仍不能解决问题,联系开发者群云推送技术客服协助解决问题。
Android应用绑定成功(onbind返回的errorcode为0)后,推送消息收不到
云推送官网常见问题或者群文件里面下载DetectTools工具,检查一下应用集成方式是否正确,如不正确参照修改建议修改。
用DetectTools工具检查一下设备当前长连接和pushservice是否正常,如不正常退出应用清掉进程重新绑定一下。
用DetectTools工具打开调试模式,跟一下相关日志(PushSDK4.6.0及以后的版本日志输出统一使用”BDPushSDK”这个TAG开头,方便查看日志)。
用云推送官网PushDemo试一下,是否能正常绑定并接收到消息。
如以上步骤仍不能解决问题,请提供appid、channelid、requestid以及推送的具体时间,联系云推送技术客服协助解决问题。
联想Lenovo_K50手机绑定不成功,返回10101,使用检测工具检测不通过
联想Lenovo_K50这款机型5.1及以上rom有问题,声明了Action但是检测不到,导致push服务不正常。计划会在下个版本单独适配,解决该问题。
是否是我们的前后台判断出问题了?之前在一些手机出现过
5-小米注意事项
当我的应用被杀掉之后,还能否接收到小米推送服务的消息?
答:有如下几种情况:如果是在MIUI系统中,使用通知栏类型的消息,是不需要应用出于启动状态就能接收并弹出通知栏的。使用透传消息,则需要应用驻留后台才能接收,由于MIUI的自启动管理限制,所以如果应用被杀,是收不到透传消息的。而如果是在非MIUI系统中,是需要应用驻留后台才能接收消息的,因此如果应用被杀死并且不能后台自启动的话,是没有办法接收消息的。为了让app尽可能的驻留后台,小米推送服务SDK监听了网络变化等系统事件,并且有应用之间的互相唤醒,但这些措施并不能保证应用可以一直在后台驻留
在较老的MIUI上,有小米系统推送服务这个进程,该进程被限制接受推送的话会导致小米推送异常
MIUI的权限管理有自启动开关,这个可能会影响小米推送使用(不知道后面MIUI对小米推送的保护级别会不会下降)
联网被阻止
小米推送服务客户端需要使用两个端口,如果在公司内网,需要联系IT部门把这两个端口开放。同时需要检查应用的联网是否会被一些手机安全助手阻止。需要特别注意的是,在MIUI系统上,长连接是由“小米服务框架”这个系统应用维护的,因此需要确保这个应用的联网并没有被阻止
如果本地时间差异太多,在一些MIUI系统上会导致注册失败
系统时间错误。由于小米推送服务需要使用https请求向服务器注册一个匿名账号,在次过程中如果系统时间错误,会引起https过期,导致注册不成功
遇过证书过期问题导致注册失败的情况,重启即可
较新的MIUI设置-》高级 里面有个神隐模式,可能会导致小米推送受影响
小米的自定义权限(修改为自定义包名的)被限制了 需要设置开启
为什么我的设备在调用registerPush的时候会出现no account的错误
在app第一次在一台设备上注册推送服务时,sdk会通过https请求,从小米推送服务器生成一个匿名账号。这个错误是由于这个请求失败导致的。一般请求失败常见的原因包括如下几种:1.系统时间错误。时间错误会导致https在校验证书有效期的时候,出现证书过期,导致https请求失败。2.网络原因。这个大部分的原因都是设备架了代理服务器或连了vpn,如果排除这些原因,就检查一下app是否申请了联网权限,是否被什么安全软件阻止了登录,公司wifi是否能用,等等。3.如果是在MIUI系统上,生成匿名账号是在一个叫小米服务框架的系统app上完成的,还需要检查这个app的联网是不是在安全中心的联网控制中被手动关闭了
为什么onNotificationMessageArrived方法没被调用到?
答:首先,确定你的接入是否正确,这个方法需要在manifest中添加这个action。 在接入正确的前提下,这个方法也不是保证一定能被调用的。在MIUI系统上,这个方法的调用需要同时满足如下两个条件:1.新版的MIUI。这个特性是在2015年才加进小米推送服务的,因此需要MIUI升级到较新的版本才能调用这个方法。2.需要应用驻留后台。小米推送服务的通知栏消息,是可以在应用不启动的前提下,就弹出通知栏消息的,在这种情况下, 由于MIUI的自启动管理,限制了应用不能在被杀后被后台唤醒,所以推送消息不能直接唤醒应用执行这个方法
为什么我在onNotificationMessageClicked方法中的startActivity不能调起目标界面?
答:由于onNotificationMessageClicked中传入的context是application context,本身没有activity栈,因此需要在创建activity时候加入NEW_TASK的flag: Intent i = new Intent(context, MyActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i);
收到通知点击推送消息,没任何反应
检测onNotificationMessageClicked事件在日志中是否触发
app被回收,小米推送走的是系统推送,收到推送后实际上app的所有进程并没有被初始化,需要等待用户点击通知栏推送。
点击后进行:
小米系统调用并唤醒口app;
然后初始化app进程;
最后再到解析推送数据进行跳转。
导致较长时间无响应的原因就是第1步和第2步慢
修复该BUG,需要解决app启动慢的问题
6-华为注意事项
是否是我们的前后台判断出问题了?之前也在华为的手机出现过
华为系统设置也有自启动管理等,可能会影响华为推送使用(不知道后面华为系统对华为推送的保护级别会不会下降)
如果开启了省电模式,锁屏后一段时间会进入无网络模式
将app进程杀掉后,发送消息无法拉起该app
push通道在的话发的消息是可以将强行停止的拉起来的,不过要求API level 12以上。Intent.FLAG_INCLUDE_STOPPED_PACKAGES,发广播时这个标记为可以将强行停止的拉起来,Android 3.1以上才支持。确认push在运行,发送消息即可强行拉起,进程名类似:com.huawei.pushtest:pushservice
在小米手机上申请不到token
在小米手机上,给这个应用设置:保持后台运行和允许开机启动。在部分品牌手机上也可以使用该方法解决。
是否可以多次调用 PushManager.requestToken
PushManager.requestToken 这个是申请token的方法 是可以调用多次的 以防止申请token失败。
为什么给手机发了多条消息,手机上线后,只收到一条?
手机不在线时,消息会缓存起来。消息参数中有一个参数是渠道号,collapse_key,对于同一个token,如果渠道号collapse_key相同,则后面的缓存消息会覆盖之前的,手机在48小时内上线时,只能收到最后一条。
collapse_key范围是1-100,对于该token,最多能缓存100条Push消息
TA的最新馆藏
喜欢该文的人也喜欢红米手机 &
神仙级手机控
楼主的荣誉
扫码下载App一键签到 升级加速
【小米达人】手机资讯太多推送太多?简单几步教你通通关闭
扫一扫!手机看帖更爽
不久前,小米迎来了6周岁的生日,MIUI作为小米手机的核心系统,在6年间受到越来越多人的喜爱,用户数量稳步上升,每周的坚持更新让MIUI被称为活的系统,橙色星期五也为大家每周的最后一个工作日增添了色彩。MIUI功能的不断增加,让我们的生活变得更便捷,电话加油包、小米漫游等新功能实实在在的为我们谋福利。但是我最近在社区看到很多米粉朋友反映MIUI自带软件推送的资讯太多,其实,这些软件推送的资讯是可以关闭的,下面就跟大家分享一下各软件资讯的关闭方法。一、日历日历作为我们生活中经常使用的工具,可以说是每天必看,手机日历更是方便了我们的生活,掏出手机就能查看农历、黄历等。MIUI日历还有今日运势、时事热点、今日开奖、今日热映等资讯供大家选择,当然不需要的朋友也可以关闭它们,方法如下。在日历中下滑至底端,选择卡片管理,将不需要的资讯选项去掉即可。设置完成后,日历界面简洁且内容齐全。二、天气天气关乎很多事情,具体到个人,主要是为了预防疾病,尤其是感冒。关注天气可以注意下雨及降温,这种比较突然的天气变化是住在城市的人的必须关注点。农村更不用说,需要关注天气帮助植物定期调整种植方式等。天气对于人们的出行、晨练、洗车都有重要意义。MIUI天气还为大家提供了一些与天气相关的小文章,如《沙尘天气为什么越来越少了》、《春日出行必备摄影六招》等。同样的,这些天气资讯可以关闭。点击菜单按钮,选择信息流设置,将天气资讯选项关闭即可。三、智能家庭小米投资了许多生态链企业,其中有部分企业已经成功孵化,甚至成为所在行业的“独角兽”,小米的生态链企业中有许多是为小米智能家庭服务的,相信随着小米生态链新品牌“MIJIA米家”的成立,将会有越来越多的智能家庭产品进入我们的生活。小米智能家庭作为手机端的控制中心,方便我们控制智能产品,其中还向我们推送了一下科技前沿资讯,如VR虚拟现实、人工智能等的最新消息,当然,不需要的朋友也可以将其隐藏。隐藏后又是一个简洁的智能家庭控制中心。四、安全中心安全中心集成了垃圾清理,流量管理、骚扰拦截、电量控制、病毒扫描、授权管理等重要功能,每个功能都非常实用。垃圾清理中有今日财经、体育资讯、娱乐八卦等消息供大家消遣阅读,当然,只要你不想要,我就帮你关关关,下面就告诉大家关闭方法。在清理垃圾后,点选设置按钮进入设置界面,下滑找到信息流设置,将两个选项框关闭。至此,所有推送资讯的关闭方法都已经告诉大家了,如果你设置后资讯仍未消失,你只需这样做:退出该软件重新进入,就是这么简单。☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*☆*或许还有一些朋友受到通知栏消息的困扰,什么是通知栏消息?就让我们看看下面这站图吧。许多人的手机都装有大量的软件,其中大部分软件虽然不是小米公司的,但它们推送的消息却会出现在小米手机的状态栏,相信很多朋友都有这样的经历:手机锁屏一段时间后,打开手机时通知栏就被各种消息占满了。今天我就再和大家说说怎么关闭这些状态栏消息,首先从小米手机自带的软件说起。一、小米生活小米生活中有彩票、服装、食品、电影票等商品供大家选购,一些商品的促销信息常常会发送到我们的通知栏,那么如果我们不想要这些消息怎么办?进入小米生活,点击我的,选择通知设置,如果上面的消息你都不想收到,只需统统关闭。二、浏览器打开浏览器,进入菜单,选择设置,消息通知管理,要什么留什么。三、小米视频小米视频集成了爱奇艺、风行等多方视频网站的资源,当你想观看独家资源时,不用再单独下载客户端。要关闭小米视频的通知栏消息,只需按图中红框操作,关闭接收推送。四、游戏同样是进入设置界面,下滑至底部,关闭活动通知消息。五、其他其他第三方应用的通知栏关闭方法在这里就不一一叙述了,需要关闭的朋友可以在相应软件的设置界面中寻找关闭方法。当然,你也可以不用这么麻烦只要长按出现的通知栏消息,在出现的通知管理页面中关闭允许通知,你以后都不会再收到这个软件的通知栏消息,除非你再将允许通知打开。又或者,你可以点击下图圈选的位置进行管理永别各种推送就是这么简单。
扫描二维码,手机查看本帖
: 感谢露珠分享
已有11人评分
是全部吗?怎么不说说下载管理和文件管理?
偷偷打广告就是耍流氓
前排有我,此贴必火!
第一段看似说MIUI系统,可是文末的通知栏截图根本不是MIUI
总评分: 经验 +11
dfdfdfdfdfdfdf
真心的不错
感觉真心的不错的,很好的!!!
fhfhfgdhgfhfghgfh
挺好的,必须支持!!!!
还是很好的,支持!!!
很好的,必须支持!!!!
很好的,必须支持下!!!!
·来自移动端
荙人,舅扶你
·来自移动端
好,,,,,,学习了
·来自小米手机5
很不错的,必须支持!!!!
很不错的,挺好的!!!
还是比较的不错的!
·来自移动端
支持,比较不错的帖子!!!!
还可以的值得
还可以的值得
小米垃圾机,广告也要不影响使用,用得老子想把手机砸了
谢谢,确实管用。
京ICP证110507号 京ICP备号5789人阅读
APP推送服务端(1)
目前主流的推送,jpush,友盟,小米等等,楼主这里用的是小米,当然需要先看小米的api
小米提供的服务端api地址:
客户端集成好sdk,服务器导入jar包,调小米的方法,然后做个后台界面供运维使用:
一个第三方的东西,其实做一遍跟做一百遍是一个意思,直接贴代码:
* 仅仅推送iOS
* @param context
* @param timeToSend
* @throws IOException
* @throws ParseException
public static boolean sendIOSAll(String context,Date timeToSend,Map&String, String& extra)throws IOException, ParseException {
sender = new Sender(appSecret);
Result result = sender.broadcastAll(iosMessage(context,timeToSend,extra), maxRetryTimes);
return resultHandle(result);
* @param context 推送内容
* @param timeToSend
定时发送消息。timeToSend是以毫秒为单位的时间戳。注:仅支持七天内的定时消息。
protected static Message iosMessage(String context,Date timeToSend,Map&String, String& extra) {
return iosMessage(context, null, null,timeToSend, extra);
* iOS开始推送
* @param context
* @param soundType 可选项,自定义消息铃声。
* @param badge 可选项,自定义通知数字角标。
* @param timeToSend
* @param extras 可选项,自定义键值对。控制客户端的行为。注:至多可以设置10个key-value键值对。
protected static Message iosMessage(String context, String soundType,Integer badge, Date timeToSend, Map&String, String& extras) {
IOSBuilder builderIOS = IOSBuilder().description(context);
if (StringUtils.isNotEmpty(soundType)){
builderIOS.soundURL(soundType);
if (badge != null){
builderIOS.badge(badge);
if(timeToSend != null){
builderIOS.timeToSend(timeToSend.getTime());
if (extras != null && !extras.isEmpty()) {
for (Map.Entry&String, String& entry : extras.entrySet()) {
builderIOS.extra(entry.getKey(), entry.getValue());
return builderIOS.build();
* 仅仅推送Android
* @param title
* @param context
* @param timeToSend
* @throws IOException
* @throws ParseException
public static boolean sendAndroidAll(String title, String context,Date timeToSend,Map&String, String& map,String alias)throws IOException, ParseException {
sender = new Sender(appSecretAndroid);
Result result =
if(!StringUtils.isEmpty(alias)){//单个推送:类似iOS的测试推送
result = sender.sendToAlias(androidMessage(title, context,timeToSend,map), alias, maxRetryTimes);
result = sender.broadcastAll(androidMessage(title, context,timeToSend,map),maxRetryTimes);
return resultHandle(result);
* Android推送
* @param title
* @param context
* @param timeToSend
protected static Message androidMessage(String title, String context,Date timeToSend,
Map&String, String& extras) {
return androidMessage(title, context, context,timeToSend,extras);
* Android开始推送
* @param title
* @param payload
* @param context
* @param timeToSend
* @param extras
protected static Message androidMessage(String title, String payload,String context,Date timeToSend,
Map&String, String& extras) {
Builder builder = builder().title(title).payload(payload)
.description(context).restrictedPackageName(packageName)
.passThrough(PASSDEFAULT)
.notifyType(DEFAULT);
if(timeToSend != null){
builder.timeToSend(timeToSend.getTime());
if (extras != null && !extras.isEmpty()) {
for (Map.Entry&String, String& entry : extras.entrySet()) {
builder.extra(entry.getKey(), entry.getValue());
return builder.build();
Integer deviceType = msg.getDeviceType(); //设备类型 0 :全设备 1:android 2:IOS
//开始构造定向推送
Map&String, String& extra = new HashMap&String, String&();
if (deviceType != null && msg.getDeviceType() == DeviceType_Android) {
setProduAndroidFlag();
//安卓没有测试环境,用单个的标记位控制是否推送一个还是推送所有
String alias = "";
if(!msg.isPushModeAndroid()&&!StringUtils.isEmpty(msg.getRegId())){
alias = msg.getRegId();
if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){//1:直接打开应用,进首页;2:进入指定的H5页面;
extra.put("class", "com.shop.splash.SplashActivity");
extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");
return XiaomiUtils.sendAndroidAll(msg.getTitle(), msg.getContent(),msg.getStime(),extra,alias);
} else if (deviceType != null && msg.getDeviceType() == DeviceType_IOS) {
//控制是推正式环境还是测试环境
setProductionMode(msg);
if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){
extra.put("class", "DWebDetailController");
extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");
return XiaomiUtils.sendIOSAll(msg.getContent(),msg.getStime(),extra);
setProduAndroidFlag();
//安卓没有测试环境,用单个的标记位控制是否推送一个还是推送所有
String alias = "";
if(!msg.isPushModeAndroid()&&!StringUtils.isEmpty(msg.getRegId())){
alias = msg.getRegId();
if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){//1:直接打开应用,进首页;2:进入指定的H5页面;
extra = new HashMap&String, String&();
extra.put("class", "com.shop.splash.SplashActivity");
extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");
boolean flagA = XiaomiUtils.sendAndroidAll(msg.getTitle(), msg.getContent(),msg.getStime(),extra,alias);
//控制是推正式环境还是测试环境
setProductionMode(msg);
if("2".equals(msg.getClickAppMode())&&!StringUtils.isEmpty(msg.getURL())){
extra = new HashMap&String, String&();
extra.put("class", "DWebDetailController");
extra.put("property", "{\"urlStr\":\""+msg.getURL()+"\"}");
boolean flagI =
XiaomiUtils.sendIOSAll(msg.getContent(),msg.getStime(),extra);
if(flagA&&flagI){
}catch(Exception ex){
ex.printStackTrace();

我要回帖

更多关于 小米推送服务端架构 的文章

 

随机推荐