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
react-native-version-check supports expo! with react-native-version-check-expo
- usage
// import
import VersionCheck from 'react-native-version-check-expo'
VersionCheck.getCountry() // this will return promise!!
VersionCheck.getCountryAsync().then(country => console.log(country)) // or use this!
- npm
$ npm install react-native-version-check --save
- yarn
$ 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
-
Add
.xcodeproj
file as library to XCode project.- In project navigator, right click Libraries
- Select
Add Files to [PROJECT_NAME]
- Add the
node_modules/react-native-version-check/ios/RNVersionCheck.xcodeproj
file
-
Add the
libRNVersionCheck.a
from theRNVersionCheck
project to your project's Build Phases > Link Binary With Libraries
- Add to your
Podfile
(assuming it's inios/Podfile
):pod 'react-native-version-check', :path => '../node_modules/react-native-version-check'
- Reinstall pod with
cd ios && pod install && cd ..
- Append the following lines to
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')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:
...
dependencies {
...
compile project(':react-native-version-check')
}
- Open up
android/app/src/main/java/[...]/MainApplication.java
......
import io.xogus.reactnative.versioncheck.RNVersionCheckPackage; // <--- HERE
......
@Override
protected List<ReactPackage> getPackages() {
......
new RNVersionCheckPackage() // <------ HERE
......
}
import { Linking } from 'react-native';
import VersionCheck from 'react-native-version-check';
// START: iOS Only
VersionCheck.setAppID(APP_ID); // Your App ID for App Store URL
VersionCheck.setAppName(APP_NAME); // Your App Name for App Store URL
// Your app's id, name and country info will be use for App Store URL like
// https://itunes.apple.com/{COUNTRY}/app/{APP_NAME}/id{APP_ID}
// END: iOS Only
VersionCheck.getCountryAsync()
.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: 'store'
})
.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.
fetchOptions: {
method: "GET"
}
}).then(latestVersion =>{
console.log(latestVersion);
});
VersionCheck.needUpdate()
.then(async res => {
console.log(res.isNeeded); // true
if (res.isNeeded) {
Linking.openURL(await VersionCheck.getStoreUrl()); // 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({
currentVersion: "1.1",
latestVersion: "2.0",
semantic: true
}).then(res => {
console.log(res.isNeeded); // false
});
-
#
setAppID(appId: Number)
() - Sets app id of application for App Store Url. [Required only for iOS Apps] -
#
setAppName(appName: String)
() - Sets app name of application for App Store Url. [Required only for iOS Apps] -
#
getCountry()
(country: String) - Returns device's country code of 2 characters. -
#
getCountryAsync()
(Promise<country: String>) - Returns device's country code of 2 characters. -
#
getPackageName()
(packageName: String) - Returns package name of app. -
#
getCurrentBuildNumber()
(buildNumber: Number) - Returns current app build number. -
#
getStoreUrl([option: Object])
(storeUrl: String) - Returns url of Play Market or App Store of app.-
Option
Field Type Default appID string App ID which was set by setAppID() appName string App Name which was set by setAppName()
-
-
#
getStoreUrlAsync([option: Object])
(Promise<storeUrl: String>) - Returns url of Play Market or App Store of app.-
Option
Field Type Default appID string App ID which was set by setAppID() appName string App Name which was set by setAppName()
-
-
#
getCurrentVersion()
(currentVersion: String) - Returns current app version. -
#
getLatestVersion([option: Object])
(Promise<latestVersion: String>) - Returns the latest app version parsed from url. Returnsnull
when parsing error occurs.-
Option
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/)
-
-
#
needUpdate([option: Object])
(Promise<result: Object>) - Returns an object contains with boolean value whether update needed, current version and latest version. Current and the latest app versions are first split by delimiter, and check each split numbers into depth.-
Option
Field Type Default currentVersion string app's current version from getCurrentVersion() latestVersion string app's latest version from getLatestVersion() depth number Infinity
delimiter string "."
semantic boolean false
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/) -
Result
Field Type isNeeded boolean currentVersion string latestVersion string
-
MIT