背景

一般情况下,我们的 app 在升级新版本后,希望能提示用户去更新,那么就需要一整套的策略来提示用户更新。

结论

最终我们实现的效果是这样的:

  • 普通弹框更新用于一般的用户提示版本升级
  • 热更新用于线上bug紧急修复

为什么要这样做呢?
经过我们的调研,热更新有一些限制,比如更改原生代码无法热更新,热的版本是维护在pushy后台的,不能改原生代码里的版本号

如何知道需要更新了?

1、普通弹框更新则由后端接口控制

req:

  • 当前APP版本号信息:1.0.0
  • 设备型号:xiaomi、huawei
  • 设备系统类型:android、ios

res:

  • 是否需要升级
  • 升级模式 1-去应用市场进行更新 2-直接下载新版本安装包
  • 是否强制更新
  • 新的版本号
  • 新的版本描述
  • 安装包下载地址

这样配置的话就比较灵活了

2、热更新则由前端通过 pushy 后台控制

普通弹框更新-相关问题

app内下载原生包并安装?

rn-fetch-blob:
https://blog.csdn.net/zhenzhenzhen1705/article/details/108315739
react-native-fs:
https://github.com/itinance/react-native-fs
https://github.com/cjdell/react-native-fs-test/blob/master/index.common.js
https://www.jianshu.com/p/77e5bd98a7f1
多个文件自定义下载:
https://blog.csdn.net/weixin_42284466/article/details/84898859
比较完美的方案:(目前使用的这个)
https://github.com/songxiaoliang/react-native-app-upgrade
https://songlcy.blog.csdn.net/article/details/77189649
打开文件的包:
https://github.com/huangzuizui/react-native-file-opener
https://github.com/1556173267/react-native-apk-manager
不好用https://github.com/jerson/react-native-updater-util
android原生包教学:
https://reactnative.cn/docs/native-modules-android
原生包:
https://github.com/feicien/android-auto-update
https://blog.csdn.net/jiejiegua/article/details/71477378

android app如何跳到对应的应用市场?

这里应该通过判断机型跳转到对应的应用市场,如果非华为oppo小米,则使用方式1.1(或者跳腾讯应用宝等通用的市场)
跳应用市场
获取设备信息

ios app内如何跳转appstore?

Linking.openURL('itms-apps://itunes.apple.com/cn/app/id1587679026')

热更新-相关问题

热更新究竟能否上架?

以下是 pushy 官网说的:https://pushy.reactnative.cn/docs/faq.html
您可能听说过各种说法,但大量实践表明,热更新目前能够顺利上架 AppStore 和其他各种应用市场。唯一需要注意的是,在审核期间请不要发布热更新,不要让审核人员看到各种更新相关的提示和弹窗,即可顺利通过。

热更新方案选型?

https://github.com/reactnativecn/react-native-pushy
https://pushy.reactnative.cn/
选择官方推荐的pushy
步骤:
1、打包一个基础的android包
2、把包上传到pushy,同时这个包分发给用户使用,此时版本为代码中写死的版本
3、当需要更新包的时候,本地改代码后执行pushy的命令生成一个增量包上传到pushy后台,上传的时候可以命名版本,这个版本只保存在pushy后台
4、这时用户的app就会弹框是否更新

热更新之后版本怎么控制?

目前看来热更新的版本是维护在pushy后台的,并不能改原生代码里的版本号.

是否可以静默更新?

可以的,无非就是把本来要弹的框去掉,更新的时候支持两种方式:

  • 直接重启更新
  • 下次启动更新

每次app切换到前台(冷启动热启动)的时候,会触发检测更新,这个时候如果有更新则会静默更新,更新完成后,则看配置的是上面哪种更新模式:
1、如果是直接重启更新,那么页面会短暂的白屏零点几秒然后恢复(因为是重新加载了 js bundle),页面将变为新版本。
2、如果是下次启动更新,那么页面没有任何反应,除非下次冷启动的时候页面才会变为新版本。此方案是真正的无感知,但是用户感知到新版本的时机比较慢。

如何进行热更新测试?

因为免费版的 pushy 只能建三个应用,所以线上android ios各一个,测试只建一个 android 的。

这样的话,每次测试的时候,只需要用这个测试账号就行了。

其他问题

什么时候弹窗提示用户更新?

后台切换到前台的时候(冷启动热启动)
https://github.com/reactnativecn/react-native-pushy/blob/master/lib/simpleUpdate.js

如何判断应用是冷启动?

冷启动其实就是 App 层面的 useEffect

ios获取app store版本号等信息?

获取版本号等信息:https://itunes.apple.com/cn/lookup?bundleId=com.cmvalue.wisederma

RN:App版本更新提示方案相关推荐

  1. iOS开发:App版本更新提示框的使用方法

    今天五一国际劳动节,依然在正常上班,就分享一个知识点呗.在iOS开发过程中,App上线之后,进行版本更新的时候,需要及时提醒用户更新最新的App版本,那么就用到了版本更新提示框的使用.本章就来介绍一下 ...

  2. app版本更新提醒方案

    我们的app不出意外都需要更新,完善,发布新版本.那么当新版本出来之后,怎么提醒用户进行升级呢?哪种提醒方法比较好,容易让用户升级应用呢?我在这总结了四个方法: 1. 服务器发送通知的方式. 当有新版 ...

  3. 制作一份高质量的APP运营推广方案

    原文地址: http://www.devstore.cn/essay/essayInfo/2293.html 注:笔者从事电子商务,网站运营实战十多年,接触过B2B,B2C,第三方平台(天猫,淘宝), ...

  4. app版本更新的五种实现方式

    版本更新大致分为四大类: 1.app负责单版本检测测与更新(自己实现版本更新); 2.通过苹果商店的自动更新机制进行自动更新(相当与自己不更新,靠苹果商店自己的自动更新机制更新,这个是苹果提倡的升级机 ...

  5. App版本更新:实现策略梳理

    前言 版本更新场景无非是登录时版本更新.推送试版本更新.心跳试版本更新等 推送试有概率失败,如信号不好,来电话了等各种因素影响.暂时排除 心跳试版本更新,实时检测,对性能跟电量多少有影响,不符合优化标 ...

  6. 最全最详细的APP运营推广策划方案

    一款成功的应用,开发APP只是第一步,比前者更重要的是APP运营,APP就像是一个需要不断包装和投入的"明星",需要不断制造"话题"来吸引用户,靠一版版的优化升 ...

  7. 史上最全的APP运营推广方案~

    从移动互联网市场总监岗位出发,从几个方面来阐述移动互联网部门如何制定一份运营推广策划案,至于关于移动互联网,移动电商是大趋势这些虚的.空泛的文字,不展开说了,这就上干货~ 一.竞品分析 1.选择竞品, ...

  8. iOS App版本更新

    版本更新的方式: 可选更新:弹框时有取消和更新两个按钮,用户可以选择取消按钮(增加新的功能,改善用户的体验等,这种更新不会影响软件的正常的使用) 强制更新:弹框时只有一个更新按钮,用户没得选择,必须更 ...

  9. Anroid app版本更新

    1.前言 Android app更新是app必须拥有的功能,上线之后,可以强制用户更新也可以提示用户有新版,之所以写这篇文章,是为了介绍app版本更新的思路,内容还是比较简单的. 有人可能会说,现在比 ...

最新文章

  1. 戏说 Windows GDI (1)
  2. 堆栈和堆得区别与垃圾回收
  3. 精度,精确率,召回率_了解并记住精度和召回率
  4. oauth2和jwt_OAuth2,JWT,Open-ID Connect和其他令人困惑的事物
  5. 入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?
  6. Python正则表达式re.sub使用
  7. 一程序员被判 9 个月:因薪酬等问题离职,rm -f * 删库,瘫痪 6 个小时
  8. 智能会议系统(3)---Android VoIP系统实现原理
  9. 在ChemDraw中一键隐藏所有氢原子的方法
  10. Mybatis自定义分布式二级缓存实现与遇到的一些问题解决方案!
  11. 9-汇编转移指令-offset+jmp+jcc+loop
  12. uc手机浏览器 手机模拟_在PC上测试移动端网站和模拟手机浏览器的5大方法
  13. 习题4-5 换硬币(20 分)
  14. Linux随笔1 - Linux哲学思想与安装
  15. Win10系统任务栏图标显示白色方块的解决方法
  16. 2022年必看的18个HR面面试题是这些【值得收藏】
  17. 非对称密码体制(公钥密码体制)中最基础的思路——MOD的运算
  18. 小米 MIX 2S 解BL锁教程 申请BootLoader解锁教程
  19. 【类不类三】来自星星的哥顿人与正则表达式
  20. 蓝桥杯 — 超声波测距模块的使用

热门文章

  1. 三星自定义状态栏_三星s9状态栏隐藏方法,三星s9状态栏隐藏小技巧
  2. 数据结构课设:基于字符串模式匹配算法的病毒感染检测问题
  3. 微信小程序-调查问卷
  4. 小程序商品数据对象累加加入购物车缓存导致的数组嵌套在上一层数组中的问题
  5. 沧小海笔记之PCIE协议解析——第三章 PCIE的数据链路层
  6. 2021最新 阿里云部署 Flask + WSGI + Nginx 详解
  7. ESP32开发路程蓝牙篇——BLE(GATT),修改设备名称,添加characteristic,发送数据,接收数据
  8. Linux企业应用——mysql(一)之mysql初始化、mysql与phpadmin、mysql主从复制
  9. 如何用移动硬盘备份计算机,移动硬盘妙用 教你安装备份Win7系统
  10. 二重积分x^2+y^2_计算二重积分∫∫(x+y)dxdy,其中D为x^2+y^2≤2x