react-native-code-update

0.5.6 • Public • Published

react-native-code-update

更新请求地址为:

{code.update.url}/app/checkUpdate?platform=ios&app_id={yourAppId}&app_version_code={currentAppVersionCode}&js_version_code={currentJSVersionCode}
返回内容:res { success: 1; updateType: 0; } success:标示请求成功,
updateType: 0表示没有更新,
1表示为android平台时检测到新的apk安装包, res.versionName版本名称,res.versionCode:版本好,res.downloadUrl 下载连接,res.changeLog 更新日志
2表示有js包更新,res.jsBundleVersion js版本名称, res.jsBundleVersionCode js版本号,res.downloadUrl,res.changeLog

ios:

info.plist中增加: code.update.app_id(string) yourAppId code.update.url(string) http://xxxxx

        jsCodeLocation = [RCTUpdateManager bundleURL];
        RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"XXX" initialProperties:nil
                                        launchOptions:launchOptions];

android

在Application.java

    @Override
    public void onCreate() {
        super.onCreate();
        ...
        ...
        AsyncHttpClient client = new AsyncHttpClient();//http请求用 
        RCTUpdateManager.init("{yourAppName(会在存储中创建目录保存更新文件)}","appId","更新url(参考ios配置)",this,client);
    }
    
    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        ...
        ...
        @Override
        protected List<ReactPackage> getPackages() {
            //mAliPushPackage = new AliPushPackage(); // <------ Initialize the Package 
            return Arrays.<ReactPackage>asList(
           new MainReactPackage(),
                    ...
                    new RCTUpdatePackage()
            );
        }
     }
 

js

  import ReactNative,{NativeModules} from 'react-native'
  var UpdateManager = NativeModules.UpdateManager;
  UpdateManager.checkUpdate(function (jsonObject) {
            if (jsonObject && jsonObject.updateType) {
                UpdateManager.doUpdate(jsonObject, function (success) {
                    if (success == "true") {
                        // Platform.OS==='android' && jsonObject.updateType == 2 && UpdateManager.askForReload();
                        if(jsonObject.updateType == 2){
                            if(Platform.OS==='android'){
                                UpdateManager.askForReload();
                            }else {
                                Alert.alert(
                                    '提示',
                                    '有数据更新是否刷新?',
                                    [
                                        {text: '刷新', onPress: () => {
                                            UpdateManager.askForReload();
                                        }},
                                        {text: '取消', onPress: () => {}, style: 'cancel'},
                                    ]
                                )
                            }
                        }
                    }else {
                        Alert.alert("提示,下载失败,请稍候再试");
                    }
                });
            }
        });

Readme

Keywords

Package Sidebar

Install

npm i react-native-code-update

Weekly Downloads

47

Version

0.5.6

License

MIT

Last publish

Collaborators

  • bestv2