A version checker for react-native applications. This library gets the latest app version by parsing google play store, apple app store's app information or custom url. Parsing code is referenced from here
I have almost zero experience in ios development, and I am no longer working on mobile app development(doing backend and devops works mainly and some web frontend). It makes it hard to maintain this library actively. Hope to have someone to help maintaining react-native-version-check!
react-native-version-check supports expo! with react-native-version-check-expo
// import
import VersionCheck from 'react-native-version-check-expo'
VersionCheck.getCountry().then(country => console.log(country))
## Getting started
- npm
```bash
$ npm install react-native-version-check
$ yarn add react-native-version-check
$ git clone https://github.com/kimxogus/react-native-version-check.git
$ cd react-native-version-check/example
$ yarn # or npm install
$ react-native run-android # or react-native run-ios
$ react-native link react-native-version-check
Add .xcodeproj
file as library to XCode project.
Add Files to [PROJECT_NAME]
node_modules/react-native-version-check/ios/RNVersionCheck.xcodeproj
fileAdd the libRNVersionCheck.a
from the RNVersionCheck
project to your project's Build Phases > Link Binary With Libraries
Podfile
(assuming it's in ios/Podfile
):
pod 'react-native-version-check', :path => '../node_modules/react-native-version-check'
cd ios && pod install && cd ..
android/settings.gradle
:
...
include ':react-native-version-check'
project(':react-native-version-check').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-version-check/android')
android/app/build.gradle
:
...
dependencies {
...
compile project(':react-native-version-check')
}
android/app/src/main/java/[...]/MainApplication.java
......
import io.xogus.reactnative.versioncheck.RNVersionCheckPackage; // <--- HERE
......
@Override
protected List
## Usage
```javascript
import { Linking } from 'react-native';
import VersionCheck from 'react-native-version-check';
VersionCheck.getCountry()
.then(country => console.log(country)); // KR
console.log(VersionCheck.getPackageName()); // com.reactnative.app
console.log(VersionCheck.getCurrentBuildNumber()); // 10
console.log(VersionCheck.getCurrentVersion()); // 0.1.1
VersionCheck.getLatestVersion()
.then(latestVersion => {
console.log(latestVersion); // 0.1.2
});
VersionCheck.getLatestVersion({
provider: 'appStore' // for iOS
})
.then(latestVersion => {
console.log(latestVersion); // 0.1.2
});
VersionCheck.getLatestVersion({
provider: 'playStore' // for Android
})
.then(latestVersion => {
console.log(latestVersion); // 0.1.2
});
VersionCheck.getLatestVersion() // Automatically choose profer provider using `Platform.select` by device platform.
.then(latestVersion => {
console.log(latestVersion); // 0.1.2
});
VersionCheck.getLatestVersion({
forceUpdate: true,
provider: () => fetch('http://your.own/api')
.then(r => r.json())
.then(({version}) => version), // You can get latest version from your own api.
}).then(latestVersion =>{
console.log(latestVersion);
});
VersionCheck.needUpdate()
.then(async res => {
console.log(res.isNeeded); // true
if (res.isNeeded) {
Linking.openURL(res.storeUrl); // open store if update is needed.
}
});
VersionCheck.needUpdate({
depth: 2
}).then(res => {
console.log(res.isNeeded);
// false; because first two fields of current and the latest versions are the same as "0.1".
});
VersionCheck.needUpdate({
currentVersion: "1.0",
latestVersion: "2.0"
}).then(res => {
console.log(res.isNeeded); // true
});
VersionCheck.needUpdate({
depth: 1,
currentVersion: "2.1",
latestVersion: "2.0",
}).then(res => {
console.log(res.isNeeded); // false
});
#getCountry()
(Promise
#getPackageName()
(packageName: String) - Returns package name of app.
#getCurrentBuildNumber()
(buildNumber: Number) - Returns current app build number.
#getStoreUrl([option: Object])
(Promise
#getAppStoreUrl([option: Object])
(Promise
Field | Type | Default |
---|---|---|
appID | string | App ID |
ignoreErrors | boolean | true |
#getPlayStoreUrl([option: Object])
(Promise
Field | Type | Default |
---|---|---|
packageName | string | Package Name |
ignoreErrors | boolean | true |
#getCurrentVersion()
(currentVersion: String) - Returns current app version.
#getLatestVersion([option: Object])
(Promisenull
when parsing error occurs.
Field | Type | Default |
---|---|---|
forceUpdate | boolean | false |
provider | string or function | provider name or function that returns promise or value of the latest version |
fetchOptions | object | isomorphic-fetch options (https://github.github.io/fetch/) |
ignoreErrors | boolean | true |
#needUpdate([option: Object])
(Promise
Field | Type | Default |
---|---|---|
currentVersion | string | app's current version from getCurrentVersion() |
latestVersion | string | app's latest version from getLatestVersion() |
depth | number | Infinity |
forceUpdate | boolean | false |
provider | string or function | provider name or function that returns promise or value of the latest version |
fetchOptions | object | isomorphic-fetch options (https://github.github.io/fetch/) |
ignoreErrors | boolean | true |
Field | Type |
---|---|
isNeeded | boolean |
storeUrl | string |
currentVersion | string |
latestVersion | string |
MIT