
最近在研究ReactNative的热更新技术,之前总结过了微软的热更新技术-CodePush、今天总结一下ReactNative中文网推出的热更新技术-Pushy,后期总结自己搭建热更新服务器需要注意的事项,以及大致的流程,主要针对iOS平台纯ReactNative项目,由于时间后期会更新针对Android平台。
iOS平台
相信大家按照ReactNative中文网的Pushy的集成文档一步一步都应该没啥问题了,这里我也不在赘述,我就我项目Pushy遇到的问题进行一下总结。
问题一
在集成react-native-pushy
的时候,发现XCode报错了,提示如下错误:

解决办法:
Build Phases -> Link Binary With Libraries -> 添加
libz.tdb
和libbz2.1.0.tbd
问题二
在打包发布更新的时候,第一步我就懵逼了,为什么要打包一个ipa包上传到平台,Why? 而且说的很模糊。
官方原话:
通过命令
$ pushy uploadIpa <your-package.ipa>
即可上传ipa以供后续版本比对之用。
随后你可以选择往AppStore发布这个版本,也可以先通过Test flight等方法进行测试
我想说What fucking you doing?,于是我忍了,
错误的操作流程
通过Archive的方式打包出一个ipa包,然后推到Pushy热更平台,然后通过Xcode安装了一个release模式的包到手机上。
后来查看Github文档,找到了原因,原来是我操作的问题,Pushy热更平台上的底包和你手机安装的包必须是一致的,但是我使用Xcode的release模式安装到手机的包和通过Archive打包出来的ipa包虽然代码和版本号等所有信息都一致,但是其实已经是两个包了,所以热更失败了
解决办法
- 正常情况下,直接把ipa包上传到AppStore,完后在推到pushy平台,用户通过AppStore下载的app是可以正常更新没问题的。
- 通过归档Archive的方式导出一个
Ad Hoc
的ipa包,然后通过Apple Configurator2
安装到手机上,然后推送到热更Pushy平台
问题三
更新代码以及执行了,但是在此检查更新之后,还会提示更新,而且markSuccess()
方法也执行了,后来通过issue253解决了
原因
ReactNative新版更改了机制
解决办法
本人亲测,正版解法。
