React Native 0.61集成code push 热更新

Code Push React Native 版本

安装code-push
npm install -g code-push-cli

安装RN版code-push插件
npm install --save react-native-code-push

iOS配置

pod install

  1. 打开 AppDelegate.m , 引入
    # import <CodePush/CodePush.h>
  2. 查找以下代码行,用于设置生产版本bridge的源 URL:
    return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
  3. 替换为:
return [CodePush bundleURL];

在Info.plist中添加CodePushDeploymentKey和对应的key

Android配置
到android/app/build.gradle 头部引入codepush.gradle 和react.gradle

apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"

到MainApplication.java中添加

// 1. Import the plugin class.

import com.microsoft.codepush.react.CodePush;

public class MainApplication extends Application implements ReactApplication {

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        ...

        // 添加的内容---------------------------
        @Override
        protected String getJSBundleFile() {
            return CodePush.getJSBundleFile();
        }
    // 添加的内容---------------------------
    };
}

打开strings.xml 添加deployment key

<string moduleConfig="true" name="reactNativeCodePush_androidDeploymentKey">你的DeploymentKey</string>

包装app
每次打开app时检查同步index.js

import codePush from "react-native-code-push";

class MyApp extends Component {
}

MyApp = codePush(MyApp);

从后台恢复时同步

let codePushOptions = { checkFrequency: codePush.CheckFrequency.ON_APP_RESUME };

class MyApp extends Component {
}

MyApp = codePush(codePushOptions)(MyApp);

手动同步

let codePushOptions = { checkFrequency: codePush.CheckFrequency.MANUAL };

class MyApp extends Component {
    onButtonPress() {
        codePush.sync({
            updateDialog: true,
            installMode: codePush.InstallMode.IMMEDIATE
        });
    }

    render() {
        return (
            <View>
                <TouchableOpacity onPress={this.onButtonPress}>
                    <Text>Check for updates</Text>
                </TouchableOpacity>
            </View> 
        )
    }
}

MyApp = codePush(codePushOptions)(MyApp);

打印codePush的log
打开 AppDelegate.m , 引入

#import <React/RCTLog.h>

在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法内第一行加上:

RCTSetLogThreshold(RCTLogLevelInfo);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.感恩班长一早在群里发起看看书,我看到了我感兴趣的内容,订了一本 2.感恩师父和姐妹们支持,一下子就免费订购成功...
    心儿聊茶阅读 304评论 0 2
  • 尚俊平,焦点网络中级,坚持分享953天,2018年12月5日,星期三 危机意指当事人目前所遭逢的情境,如灾难,离婚...
    32598db751bb阅读 325评论 0 0
  • 一、话术层面(偏业务,可以用来给客户讲) 智能餐厅,是新餐饮趋势。点餐、下单、结账,全部都依赖与智能餐厅整套系统,...
    罗重阳_雅座阅读 215评论 0 0
  • 文/南城 黑夜里会升出红色的太阳 湖边的已然抛下我 随着云朵 静静的 散去在 我们不曾察觉到高空和秘密里 留下的 ...
    南丶小生阅读 86评论 0 1
  • 刚刚来这个世界上,就如一颗陨落的星辰的微粒,跌落谷底,世间万物就如同风吹一般只需一个片刻就便失去他最初的本正...
    落明明阅读 93评论 0 0