美文网首页reactnative
ReactNative App更新下载(Android+iOS)

ReactNative App更新下载(Android+iOS)

作者: 会飞的鱼儿_0012 | 来源:发表于2019-12-19 11:02 被阅读0次

    APP涉及到版本更新(非热更新),版本检测下载App,Android和iOS实现方式不同

    1.Android直接和服务器上版本号作对比下载APK进行安装
    2.iOS由于需要到AppStore进行下载应用,所以应用需要和AppStore上应用做版本对比后跳转到AppStore进行App更新


    --Android

    1.使用插件 rn-fetch-blob

     npm install --save rn-fetch-blob //安装插件
    

    RN0.60版本以下需要link

     react-native link rn-fetch-blob  //0.60+自动link
    

    RN0.60+

    cd ios
    pod install   //ios使用pod安装
    

    2.功能实现

    • Android需要更改原生代码获取权限按照rn-fetch-blob文档配置
      Android6.0+需要手动获取权限

    代码如下:

    /***
      Android6.0+获取文件权限
    */
    crequestMultiplePermission = async () => {
        try {
          const permissions = [
            PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
          ];
          const granteds = await PermissionsAndroid.requestMultiple(permissions);
          if (granteds['android.permission.WRITE_EXTERNAL_STORAGE'] === 'granted') {
            this.storage = true;
          } else {
            this.storage = false;
          }
          if (this.storage) return;
        } catch (err) {
          console.log(err);
        }
      };
    
    
    /**
    检测更新下载APP
    */
    
    import RNFetchBlob from 'rn-fetch-blob';
    
    Update = () => {
      const android = RNFetchBlob.android;
    
      //配置手机系统通知栏下载文件通知,下载成功后点击通知可运行apk文件
      RNFetchBlob.config({
        addAndroidDownloads: {
          useDownloadManager: true,
          title: 'update app',
          description: 'An APK that will be installed',
          mime: 'application/vnd.android.package-archive',
          path: `${RNFetchBlob.fs.dirs.DownloadDir}/update.apk`,
          mediaScannable: true,
          notification: true
        }
      }).fetch(
        'GET',
        'http://gdown.baidu.com/data/wisegame/9fdb4b60017e5bf9/baidushoujizhushou_16798097.apk' //apk下载地址
      ).then(res => {
        //下载成功后自动打开安装已下载apk文件
        android.actionViewIntent(
          res.path(),
          'application/vnd.android.package-archive'
        );
      });
    }
    
    

    --iOS

    • 将ios目录下ios_upgrade文件夹拷贝到项目目录下
      代码如下:
    import { NativeModules } from "react-native";
     NativeModules.upgrade.upgrade("123456", msg => {
        if (msg === "YES") {
            // 跳转到APP Stroe
            NativeModules.upgrade.openAPPStore("123456")  //数字为对应的AppStore引用的ID
          } else {
           // TODO: 无更新
            callback && callback();
          }
    }
    

    项目地址:github

    相关文章

      网友评论

        本文标题:ReactNative App更新下载(Android+iOS)

        本文链接:https://www.haomeiwen.com/subject/xkzpnctx.html