react-native 开发之使用codepush来实现热跟新

使用codepush实现热跟新的总结

首先要说一下什么是热跟新,就是好热的跟新,就是不用经过appstore发布审核,然后你只需要发一个包到codepush的服务器上,微软的codepush服务就会把包安装到用户终端上,快速,方便;那有的小伙伴说了,我发的包有bug,怎么办?微软的工程师已经为你想好了一切,可以执行回滚的操作,就是说,用户的手机终端就算装了新包,我也可以回滚调那个包;就是给用户的感知可能不太好,我擦,昨天明明有那个功能的,今天打开手机怎么没有了,这就要求开发者发包的时候要经过充分的检查;所以说codepush是一个神器,有没有缺点,肯定有,就是xcode里 project 代码的改动没有办法通过codepush去发包,只能脚本和图片,说了这么多,前奏太长,进入到正题。

通过谷歌搜索codepush呢,会搜出来一堆,对于英语水平只能看得懂小电影的同学来说,那些文档真是又臭又长,推荐俩个地址:

codepush中文版

codepush英文版

这俩个地址呢,中文版比英文版少很多内容,可以对照着看,但是还是建议看英文版的,逼格很高啊,哦,还有一个地址codepush微软官方文档

1.npm install -g code-push-cli,这个呢就是在你的终端上装一个code-push工具,装完 输入code-push ,效果是这样的:

有没有觉得很吊,这才是第一步,

2.code-push register,这个呢就是注册一下,会跳到一个链接,选择什么账户去注册这个服务,可以选择微软企业账户,微软个人账户,还有github,是不是大多都会选择github。

3.code-push app add appname,这个就是把你的app的bundleid加进去,你也可以code-push app rename 修改名字,执行完这步命令之后呢,就是这样的了:


请谅解我打了吗萨克,无码之王,默认的是staging(临时环境)和production(生产环境),staging呢就是用来测试,开发环境使用的,production就是正式环境了,通俗的说就是AppStore里面的,如果说你看了官方文档,看完之后你可能会一头雾水,staging和production是怎么对应到我的app的环境的,这个在后面会说明,这俩个key有妙用。到这一步安装工具就差不多了。

4.npm i react-native-code-push --save;安装react-native工具包,安装这个包可以调用codeopush的api,需要在js代码中调用一下特定的api,和codepush的服务端进行通信,如图,


这只是一个实例,CodePush 提供的方法超级多,可以满足现实的各种“奇葩”需求,然后还要添加依赖,可以用cocoapods,这个东西安装很麻烦,推荐rnpm,执行一下rnpm link,就可以建立起链接了。cocoapods安装

5.第三步说到的key这时候就要用起来了,先上几张官方网站的图,它们是这样说的,


第一步


第二步


第三步


第四步

按照文档的四步成神曲来做的话,那么就ok了,但是事有愿违,对于了解xcode project 目录意义的开发者来说,这四步还是不简单的,第一步说的是我需要在配置那里再加一个key值staging(其实可以随便定义的),然后选到project tab上,点击加号加一你自定义的codepush_key,最后在你的info.plist xml中加上这个key,就ok了,然后我这样做了,没什么吊用,我还在github上用蹩脚的英语问微软的工程师了,知道今天上午我才找到这个问题,就是我加的key没有在project中,而是在target中,那么project在哪呢,上图:


看到那个红的吗萨克没有,点击一下,选择project中的项目,然后走上面的流程,给俩个链接,

project和target的区别

蹩脚的英语

最后在把AppDelegate.m中的 jsCodeLocation = [[NSBundlemainBundle]URLForResource:@"main"withExtension:@"jsbundle"];

改成jsCodeLocation = [CodePushbundleURL];

上图:


好的,做完这些,那么恭喜你,前奏差不多了,是时候进入到高潮,说起这个,想起了一部电影,浪潮,推荐一下,大电影哦,你懂的链接

6:使用 react-native bundle 将你的改动打包到一个main.jsBundle 文件夹,建议在你的项目中建立一个文件夹来存放main.jsBundle;

使用这个命令 react-native bundle --platform ios --entry-file index.ios.js (一般都是这个入口)

--bundle-output ./你建立的文件夹/main.jsbundle  --dev false


红色的玛莎就是 --bundle-output后面的那一溜

7:第6步把包打包在了本地,那么下面就要推送到codepush的服务上了,我只是给出一种命令,详细的说明到官方文档中看。


比如 code-push release-react  f8app ./上面的文件夹   1.0.0  -d(deployment的缩写) staging 或者production 就看你发布了哪个环境上了,1.0.0是你现在app的版本号,重头戏来了,比如我发布到了staging临时环境上,那么是怎样和我app环境对应的,好吧,其实我告诉你,毛关系没有,打开你的xcode :



找到scheme,你会看到 run 取的是debug的配置, Archive 取的是release的配置,你是不是有点明白,bingo!deployment和我app的  development environment没有联系 


比如我的release  的keyvalue 是production的值,那么使用的时候就发布到production,这样你的release版本的app才能更新。

8.做完以上的一切,你以为就结束了吗,no,这才是刚开始,做完上面的几步,这个codepush的流程就通了,就像买了一个裸车,还需要装饰,codepush提供很多的方法,可以实现比如提醒用户是否需要更新,亲测就算这次点了不更新,下次还是会提示;不提醒用户更新,偷偷摸摸的更新掉;更新完立即重启;显示更新进度等功能,我也没有完全搞通,我的车还要装饰一下,这里说一下,就是用户启动app的时候呢 ,会从codepush的服务把包下载下来,所以有时候会有几分钟的时间,怎样是最好的体验,个人觉得偷偷摸摸的更新最好了。

好了,就说到这里,codepush的高级语法就不说了,再说就天亮了,第一次发文,还请海涵,可能特么的就没人看,悲催,如果觉得还可以,那么请关注我,给个赞,如果你是个妹子,可以一起交流技术,在react-native 这片深海里一起游泳,请穿上火辣的泳衣。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,312评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,578评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,337评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,134评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,161评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,303评论 1 280
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,761评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,421评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,609评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,450评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,504评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,194评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,760评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,836评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,066评论 1 257
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,612评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,178评论 2 341

推荐阅读更多精彩内容