前言
一般情况,react-native项目是集成在Ios或Android应用中,我们没有权利在rn项目中执行App应用更新操作。有时候,rn项目的部分功能依赖于App应用的最新版本,此时就需要提示用户版本更新,并跳转到应用商店。Android 端应用商店不统一,无法正确的引导用户;但在Ios端,可以快速引导用户跳转应用商店AppStore下载最新版本的App。下面的方法,以京东App为例:
判断京东App是否需要版本升级
1)获取当前引用的版本
1 2 3 4 5 6 7 8 9 10 11
| function getClientVersion() { return new Promise((resolve) => { JDNativeSystem.getClientVersion().then((res) => { resolve(res || '') }).catch((err) => { resolve('') console.log('JDNativeSystem.getClientVersion9 err!', err) }) }) }
|
2)判断当前版本是否需要升级
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| const miniVersion = '9.3.2'
function compareVersion(compareVersion, currentVersion) { var v1 = version2Num(compareVersion) var v2 = version2Num(currentVersion) if (v1 > v2) { return -1 } else if (v1 == v2) { return 0 } else { return 1 }
function version2Num(version) { var c = version.toString().split('.') var num_place = ["", "0", "00", "000", "0000"] var r = num_place.reverse() for (var i = 0; i < c.length; i++) { var len = c[i].length c[i] = r[len] + c[i] } var res = c.join('') return res } }
function isNeedUpgrade() { return new Promise((resolve) => { getClientVersion().then((version) => { if (version) { const result = compareVersion(miniVersion, version) if (result >= 0) { resolve(false) } } resolve(true) }) }) }
|
若是需要版本升级,则弹框提示用户下载最新版本App
获取京东App在AppStore中的应用id
1)进入苹果应用商店https://www.apple.com/app-store/
2)搜索京东,获取应用列表数据
3)点击京东,跳转到京东详情页,根据京东详情页的链接https://apps.apple.com/us/app/%E4%BA%AC%E4%B8%9C-%E4%B8%8D%E8%B4%9F%E6%AF%8F%E4%B8%80%E4%BB%BD%E7%83%AD%E7%88%B1/id414245413 ,可以获取到京东应用的id——414245413
获取京东App在苹果商店的下载地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function getJDAPPStoreInfo() { const JDAppStoreId = 414245413 fetch(`https://itunes.apple.com/CN/lookup?id=${JDAppStoreId}`) .then((response) => response.json()) .then((res) => { if (res && res.results && res.results.length) { this.JDAppVersion = res.results[0].version this.JDAppStoreUrl = res.results[0].trackViewUrl } }).catch((err) => {
console.log('getJDAPPStoreInfo err!', err) })
}
|
跳转应用商店京东App下载页
1 2 3 4
| import { Linking } from 'react-native' Linking.openURL(this.JDAppStoreUrl).catch((err) => { console.log(err, 'jump app store err!') })
|