Fork me on GitHub

ReactNative之Pushy热更新流程

最近在研究ReactNative的热更新技术,之前总结过了微软的热更新技术-CodePush、今天总结一下ReactNative中文网推出的热更新技术-Pushy,后期总结自己搭建热更新服务器需要注意的事项,以及大致的流程,主要针对iOS平台纯ReactNative项目,由于时间后期会更新针对Android平台。

iOS平台

相信大家按照ReactNative中文网的Pushy的集成文档一步一步都应该没啥问题了,这里我也不在赘述,我就我项目Pushy遇到的问题进行一下总结。

问题一

在集成react-native-pushy的时候,发现XCode报错了,提示如下错误:

解决办法:

Build Phases -> Link Binary With Libraries -> 添加libz.tdblibbz2.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包虽然代码和版本号等所有信息都一致,但是其实已经是两个包了,所以热更失败了

解决办法

  1. 正常情况下,直接把ipa包上传到AppStore,完后在推到pushy平台,用户通过AppStore下载的app是可以正常更新没问题的。
  2. 通过归档Archive的方式导出一个Ad Hoc的ipa包,然后通过Apple Configurator2安装到手机上,然后推送到热更Pushy平台

问题三

更新代码以及执行了,但是在此检查更新之后,还会提示更新,而且markSuccess()方法也执行了,后来通过issue253解决了

原因

ReactNative新版更改了机制

解决办法

本人亲测,正版解法。