react-native更新App

react-native更新App(安卓+ios)

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

安卓:

1、使用插件 rn-fetch-blob //或者 react-native-fetch-blob

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

2、安卓配置
在android/app/src/main/AndroidManifest.xml添加权限

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />                                               
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />                                              
  <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
  <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

3、ios配置

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

1、安卓使用

/***
  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);
    }
  };
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',
    'https://raw.githubusercontent.com/feicien/android-auto-update/develop/extras/android-auto-update-v1.2.apk' //apk下载地址
  ).then(res => {
    //下载成功后自动打开安装已下载apk文件
    android.actionViewIntent(
      res.path(),
      'application/vnd.android.package-archive'
    );
  });
}

2、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();
      }
}

ios不使用插件更新使用如下:

Linking.openURL("APPstore里面appId").catch(err => console.error('An error occurred', err))
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端阿皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值