1.0.2 • Published 11 months ago

react-native-upgrade-app v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

react-native-upgrade-app

react native upgrade app

Installation

yarn add react-native-upgrade-app

Installing dependencies

yarn add react-native-fs

Usage

API

upgrade(config: UpgradeConfig)

type UpgradeConfig = {
  fromUrl: string;          // URL to download file from
  headers?: Headers;        // An object of headers to be passed to the server
  background?: boolean;     // Continue the download in the background after the app terminates (iOS only)
  discretionary?: boolean;  // Allow the OS to control the timing and speed of the download to improve perceived performance  (iOS only)
  cacheable?: boolean;      // Whether the download can be stored in the shared NSURLCache (iOS only, defaults to true)
  progressInterval?: number;
  progressDivider?: number;
  begin?: (res: DownloadBeginCallbackResult) => void; // Note: it is required when progress prop provided
  progress?: (res: DownloadProgressCallbackResult) => void;
  resumable?: () => void;    // only supported on iOS yet
  connectionTimeout?: number // only supported on Android yet
  readTimeout?: number       // supported on Android and iOS
  backgroundTimeout?: number // Maximum time (in milliseconds) to download an entire resource (iOS only, useful for timing out background downloads)
  downloadFinish?: (success: boolean) => void; // download finish callback
  install?: boolean; // is install
  installCallback?: (success: boolean, msg?: string) => void; // install callback
  onError?: (error: unknown) => void; // error callback
};

Example

import * as React from 'react';
import { useState } from 'react';
import {
  StyleSheet,
  View,
  Text,
  TouchableOpacity,
  Platform,
} from 'react-native';
import { upgrade } from 'react-native-upgrade-app';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  btn: {
    width: 200,
    height: 100,
    backgroundColor: 'red',
  },
});

function App() {
  const [progress, setProgress] = useState(0);
  const update = () => {
    // 请替换为一个可用的url
    // Please replace with an available url
    if (Platform.OS === 'android') {
      upgrade({
        fromUrl: 'https://example.com/example.apk',
        progress: (res) => {
          console.log('progress', res);
          setProgress(Math.ceil((res.bytesWritten / res.contentLength) * 100));
        },
        downloadFinish: (success) => {
          console.log('finish', success);
        },
        installCallback: (status, msg) => {
          console.log('install', status, msg);
        },
        onError: (error) => {
          console.log('error', error);
        },
      });
    }
  };

  return (
    <View style={styles.container}>
      <TouchableOpacity style={styles.btn} onPress={update}>
        <Text>升级</Text>
      </TouchableOpacity>
      <Text>进度:{progress}%</Text>
    </View>
  );
}

export default App;

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT