admin管理员组文章数量:1600477
背景
一般情况下,我们的 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/zhenzhenzhen1705/article/details/108315739
react-native-fs:
https://github/itinance/react-native-fs
https://github/cjdell/react-native-fs-test/blob/master/indexmon.js
https://www.jianshu/p/77e5bd98a7f1
多个文件自定义下载:
https://blog.csdn/weixin_42284466/article/details/84898859
比较完美的方案:(目前使用的这个)
https://github/songxiaoliang/react-native-app-upgrade
https://songlcy.blog.csdn/article/details/77189649
打开文件的包:
https://github/huangzuizui/react-native-file-opener
https://github/1556173267/react-native-apk-manager
不好用https://github/jerson/react-native-updater-util
android原生包教学:
https://reactnative/docs/native-modules-android
原生包:
https://github/feicien/android-auto-update
https://blog.csdn/jiejiegua/article/details/71477378
android app如何跳到对应的应用市场?
这里应该通过判断机型跳转到对应的应用市场,如果非华为oppo小米,则使用方式1.1(或者跳腾讯应用宝等通用的市场)
跳应用市场
获取设备信息
ios app内如何跳转appstore?
Linking.openURL('itms-apps://itunes.apple/cn/app/id1587679026')
热更新-相关问题
热更新究竟能否上架?
以下是 pushy 官网说的:https://pushy.reactnative/docs/faq.html
您可能听说过各种说法,但大量实践表明,热更新目前能够顺利上架 AppStore 和其他各种应用市场。唯一需要注意的是,在审核期间请不要发布热更新,不要让审核人员看到各种更新相关的提示和弹窗,即可顺利通过。
热更新方案选型?
https://github/reactnativecn/react-native-pushy
https://pushy.reactnative/
选择官方推荐的pushy
步骤:
1、打包一个基础的android包
2、把包上传到pushy,同时这个包分发给用户使用,此时版本为代码中写死的版本
3、当需要更新包的时候,本地改代码后执行pushy的命令生成一个增量包上传到pushy后台,上传的时候可以命名版本,这个版本只保存在pushy后台
4、这时用户的app就会弹框是否更新
热更新之后版本怎么控制?
目前看来热更新的版本是维护在pushy后台的,并不能改原生代码里的版本号.
是否可以静默更新?
可以的,无非就是把本来要弹的框去掉,更新的时候支持两种方式:
- 直接重启更新
- 下次启动更新
每次app切换到前台(冷启动热启动)的时候,会触发检测更新,这个时候如果有更新则会静默更新,更新完成后,则看配置的是上面哪种更新模式:
1、如果是直接重启更新,那么页面会短暂的白屏零点几秒然后恢复(因为是重新加载了 js bundle),页面将变为新版本。
2、如果是下次启动更新,那么页面没有任何反应,除非下次冷启动的时候页面才会变为新版本。此方案是真正的无感知,但是用户感知到新版本的时机比较慢。
如何进行热更新测试?
因为免费版的 pushy 只能建三个应用,所以线上android ios各一个,测试只建一个 android 的。
这样的话,每次测试的时候,只需要用这个测试账号就行了。
其他问题
什么时候弹窗提示用户更新?
后台切换到前台的时候(冷启动热启动)
https://github/reactnativecn/react-native-pushy/blob/master/lib/simpleUpdate.js
如何判断应用是冷启动?
冷启动其实就是 App 层面的 useEffect
ios获取app store版本号等信息?
获取版本号等信息:https://itunes.apple/cn/lookup?bundleId=com.cmvalue.wisederma
版权声明:本文标题:RN:App版本更新提示方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728353287a1155320.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论