RN熱更新のXcode構成

2003 ワード

RN熱更新のXcode構成
codepushではstaging環境がありますが、一般開発ではこのコーナーはないので、stagingをdebugとすれば良いのです
  • 追加App
    code-push app add  ios react-native
    
  • Appタイプ
    code-push deployment add  
    eg:code-push deployment add lw-ios ios
    
  • を設定する.
  • 関連key
    code-push deployment ls  -k
    
  • を表示
  • 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
    
  • リリース
    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     
    
  • Xcode構成
  • info.plist
      CodePushDeploymentKey
      $(CODEPUSH_KEY)
    
  • Build Setting
      User-Defined
      //:configuration = Debug
       CODEPUSH_KEY = Kpzc77zDzUj2gsqI0JCX8wv7wknYxfqdoWNad
    
       //:configuration = Release
       CODEPUSH_KEY = Kpzc77zDzUj2gsqI0JCX8wv7wknYxfqdoWNad
    

  • 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];
    }