NXT-FE / blog

能效通前端团队博客
MIT License
4 stars 0 forks source link

App Remote Push 专题 #5

Open pengkobe opened 7 years ago

pengkobe commented 7 years ago

这里开一个 App 远程推送专题 Issue. 大家可以把看到的好资料,好方案分享到这里.

pengkobe commented 7 years ago

IOS相对来说要简单点,只有苹果一个生态系统,网上也有比较完整的教程,使用极光推送与友盟推送都可以解决问题。

IOS 远程推送流程

  1. 向 苹果服务器APNS 发送请求,获取唯一"令牌" device token
  2. 拿着device token,向公司服务器或第三方推送(极光推送,友盟推送等)提交请求
  3. 服务器接收到请求,自动向苹果服务器APNS发起推送请求.
  4. 苹果服务器APNS再根据唯一的"令牌" device token来定位到手机进行消息推送.
  5. 注册消息获取事件

参考资料

pengkobe commented 7 years ago

Android 远程推送流程

重点参考:极光推送-jpush-phonegap-plugin

难点/方案

让手机厂商加入白名单

一般情况下,我们希望做到像微信、QQ 这样的大厂应用,就算是应用进程被删掉也可以推送相关消息,然而我们做不到让手机厂商把我们的 App 加入到白名单中的,也就是不禁止自启动。

应用保活

文案引导(推荐)

用文案引导用户把你的应用在手机设置中设置允许自启动,把选择权交给用户,这个也是 Google 官方推荐的方法。 参考极光 SDK FAQ: https://docs.jiguang.cn/jpush/client/Android/android_faq/#push-android

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

由于第三方 ROM 的管理软件需要用户手动操作
小米【MIUI】
自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
通知栏设置:应用默认都是显示通知栏通知,如果关闭,则收到通知也不会提示
网络助手:可以手动禁止已安装的第三方程序访问2G/3G和WIFI的网络和设置以后新安装程序是否允许访问2G/3G和WIFI的网络
MIUI 7 神隐模式: 允许应用进行自定义配置模式,应用在后台保持联网可用,否则应用进入后台时,应用无法正常接收消息。【设置】下电量和性能中【神隐模式】
华为【Emotion】
自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程不会开启,只能手动开启应用
后台应用保护:需要手动把应用加到此列表,否则设备进入睡眠后会自动杀掉应用进程,只有手动开启应用才能恢复运行
通知管理:应用状态有三种:提示、允许、禁止。禁止应用则通知栏不会有任何提醒
魅族【Flyme】
自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启
通知栏推送:关闭应用通知则收到消息不会有任何展示
省电管理: 安全中心里设置省电模式,在【待机耗电管理】中允许应用待机时,保持允许,否则手机休眠或者应用闲置一段时间,无法正常接收消息。
VIVO【Funtouch OS】
内存一键清理:需要将应用加入【白名单】列表,否则系统自带的“一键加速”,会杀掉进程
自启动管理:需要将应用加入“i管家”中的【自启动管理】列表,否则重启手机后进程不会自启。但强制手动杀进程,即使加了这个列表中,后续进程也无法自启动。
OPPO【ColorOS】
冻结应用管理:需要将应用加入纯净后台,否则锁屏状态下无法及时收到消息
自启动管理:将应用加入【自启动管理】列表的同时,还需要到设置-应用程序-正在运行里锁定应用进程,否则杀进程或者开机后进程不会开启,只能手动开启应用
三星
内存一键优化:需要将应用加入【白名单】列表,否则系统内存优化后,会杀掉应用进程
pengkobe commented 7 years ago

厂商参考

欢迎补充....

百度

@CShame ,之前还有相关 Cordova API,结果后来消失不见,出于百度是无良厂家,不建议使用。
且看看人家对 Cordova 的态度:
http://push.baidu.com/issue/view/2014
回答是:建议参考第三方,暂时不会提供。

友盟推送

cnzz 起家,做网站的估计很少有人不知道这个,提供 Android 与 IOS API,官网上查看上次更新时间为2016-05-27,更新频率较低,且并没有提及源码开放与 Cordova 访问策略。

极光推送

对比之下,极光推送应该算是最优方案了,提供完善的开源 Demo,支持 Cordova,社区也比较活跃,值得一试。

( update at 4-10)

个推

http://www.getui.com/cn/getui.html
查资料时意外看到,网上口碑较好,支持 cordova 与 rn 等 hybrid 开发方式

华为/小米

自带推送平台,主要针对自家生产的手机。

(update at 2017-06-22)

融云其实就有集成推送,正好我们又有用到融云的 IM 服务,是否可以一统江湖?

liuxinqiong commented 7 years ago

ngCordova提供了这么个插件,不晓得有用没,我也没看懂。 pushNotifacationV5