Android App收不到推送的消息

2,513 阅读6分钟

推送功能可以算是每个App的都会开发的基本功能了,服务端可主动向其用户推送各类消息,结合精准的用户画像分析,给合适的用户在合适的场景下推送合适的内容,大幅度提升消息点击率、用户活跃度和留存率。

推送把控不当适得其反,引起弊端,骚扰用户,提高卸载率,过多的无价值内容,使用户反感。

就这么一个最基本的功能,让无数Android开发喷血,叫骂呀!App被杀死后,它是接受不到第三方推送的,那怎么办呢?那就想办法不被杀死了,尝试各种方法,双进程双服务互拉起,播放无声音乐,一像素等等,太流氓了,不可能做到保活的。Android系统越来越完善,权限限制也越来越大,第三方系统更是把控的很严格,真的太难了!!!

应该会羡慕iOS吧,推送证书一申请,接收方法一加入,ok了~~~

第三方系统收不到推送的消息

由于第三方 ROM 的管理软件需要用户手动操作

  • 小米【 MIUI 】

    • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
    • 通知栏设置:应用默认都是显示通知栏通知,如果关闭,则收到通知也不会提示
    • 网络助手:可以手动禁止已安装的第三方程序访问 2G/3G 和 WIFI 的网络和设置以后新安装程序是否允许访问 2G/3G 和 WIFI 的网络
    • MIUI 7 神隐模式: 允许应用进行自定义配置模式,应用在后台保持联网可用,否则应用进入后台时,应用无法正常接收消息。【设置】下电量和性能中【神隐模式】
  • 华为【 Emotion 】

    • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程不会开启,只能手动开启应用
    • 后台应用保护:需要手动把应用加到此列表,否则设备进入睡眠后会自动杀掉应用进程,只有手动开启应用才能恢复运行
    • 通知管理:应用状态有三种:提示、允许、禁止。禁止应用则通知栏不会有任何提醒
  • 魅族【 Flyme 】

    • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
    • 通知栏推送:关闭应用通知则收到消息不会有任何展示
    • 省电管理: 安全中心里设置省电模式,在【待机耗电管理】中允许应用待机时,保持允许,否则手机休眠或者应用闲置一段时间,无法正常接收消息。
  • VIVO【 Funtouch OS 】

    • 内存一键清理:需要将应用加入【白名单】列表,否则系统自带的“一键加速”,会杀掉进程
    • 自启动管理:需要将应用加入 “i 管家”中的【自启动管理】列表,否则重启手机后进程不会自启。但强制手动杀进程,即使加了这个列表中,后续进程也无法自启动。
  • OPPO【 ColorOS 】

    • 冻结应用管理:需要将应用加入纯净后台,否则锁屏状态下无法及时收到消息
    • 自启动管理:将应用加入【自启动管理】列表的同时,还需要到设置-应用程序-正在运行里锁定应用进程,否则杀进程或者开机后进程不会开启,只能手动开启应用
  • 三星
    • 内存一键优化:需要将应用加入【白名单】列表,否则系统内存优化后,会杀掉应用进程

试试接入各大厂商通道

Huawei PUSH(华为推送服务)是华为为开发者提供的消息推送平台,建立了从云端到终端的消息推送通道。开发者通过集成华为PUSH服务可以将最新信息即时通知用户,构筑良好的用户关系,提升用户的感知度和活跃度。

一、华为推送服务开发准备必备步骤主要包括:

  1. 注册认证成为开发者
  2. 配置应用签名
  3. 创建产品和应用
  4. 开通推送服务
  5. 获取推送服务参数
  6. 下载SDK
  7. 集成工程

二、客户端开发主要包括:

  1. 初始化Agent
  2. 申请PUSH Token
  3. 实现自定义广播接收消息
  4. 注销PUSH Token(可选)
  5. 是否接收PUSH通知栏消息(可选)
  6. 是否接收PUSH透传消息(可选)
  7. 展示应用角标(可选)

三、服务端开发主要包括:

  1. 应用服务器获取AccessToken
  2. 应用服务器发送PUSH消息
  3. 通过消息回执实现自定义推送(可选)
  4. 应用服务器发送应用角标(可选)

客户端开发:使客户端APP具备单条PUSH消息的发送和接收能力。

STEP1、开发者的APP集成HMS SDK,调用getToken接口从PUSH服务器获取到PUSH Token。
STEP2、开发者的APP对于获取到的PUSH Token需要上报到开发者自己的服务器APP Provider Server上。

服务端开发:实现APP服务器批量发送通知消息。

STEP3、开发者利用服务器上保存的PUSH Token向对应的终端设备发送通知消息。
STEP4、消息携带的PUSH Token作为鉴权和路由机制会通过华为PUSH平台将消息发送到最终用户设备上。

用过极光推送的都会涉及到设置别名或标签,可是华为push没有别名和标签,只有PUSH Token,翻了~和极光不能简单粗暴的一起使用了。

看华为PUSH服务文档之前是这么想的:

用设备类型进行区分使用哪家PUSH服务,设备为华为的,那就走华为PUSH服务。设备为小米的,则走小米PUSH服务。。。除大厂有PUSH服务的走极光PUSH服务。太TM天真了。。。

那就只有PUSH Token的问题,咱接着往下想:

那针对华为做一个token与账户绑定,每个设备的上每个应用的Token都是唯一存在的。假设A账户绑定了token,然后切换B账户又和token绑定了,那给A和B推送的时候是指定的同一个token,此时服务器需要去把A账户绑定的token注销掉,不然给A账户的推送消息就会被B账户收到。但是后台开发回复说这样做不太好处理,容易出错!!!

还有五六家PUSH服务情况各异,管理起来真的是太难了!

罢了罢了,不想了,脑仁疼!

这么搞的话也挺耗成本的,又没有那么多测试机,还是选择充钱吧!

极光VIP服务厂商通道(华为,小米,魅族,FCM),它是根据app的月在线用户峰值来进行收费的。

何以解忧?唯有充钱!

厂商通道相关参数申请教程>>

极光厂商通道集成指南>>


csdn:https://blog.csdn.net/feiyue0823/article/details/100159650