RN 热更新之Xcode配置

RN 热更新之Xcode配置

在codepush有staging环境 但是在普通开发中没有这个环节,所以就把staging当做debug就好了

  1. 添加App

    code-push app add  ios react-native
    
  2. 设置App类型

    code-push deployment add  
    eg:code-push deployment add lw-ios ios
    
  3. 查看相关的key

    code-push deployment ls  -k
    
  4. JS配置

import CodePush from "react-native-code-push"; // 引入code-push
let codePushOptions = {
  //设置检查更新的频率
  //ON_APP_RESUME APP恢复到前台的时候
  //ON_APP_START APP开启的时候
  //MANUAL 手动检查
  checkFrequency : CodePush.CheckFrequency.ON_APP_RESUME
};

class App ... {
  ...
   componentDidMount() {
      //检查更新
      CodePush.sync(
          { updateDialog: false, installMode: CodePush.InstallMode.IMMEDIATE },//无对话框,立即启动更新
          //自定义对话框也可以
      );
  }
}
App = CodePush(codePushOptions)(App)
export default App
  1. 发布

    code-push release-react lw-ios ios  --t 1.0.0 --dev false --des "第6次提交" --m true #debug
    code-push release-react lw-ios ios  --t 1.0.0 --dev false --d Production --des "第1次提交" --m true  #realase
    
    --t 表示版本
    
  1. Xcode配置

    1. info.plist

        CodePushDeploymentKey
        $(CODEPUSH_KEY)
      
    2. Build Setting

        User-Defined
        //:configuration = Debug
         CODEPUSH_KEY = Kpzc77zDzUj2gsqI0JCX8wv7wknYxfqdoWNad
      
         //:configuration = Release
         CODEPUSH_KEY = Kpzc77zDzUj2gsqI0JCX8wv7wknYxfqdoWNad
      
  2. OC

    - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
    //#if DEBUG
    //    return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
    //  #else
    //  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
    //#endif
      return [CodePush bundleURL];
    }
    
    

你可能感兴趣的:(RN 热更新之Xcode配置)