QPInfoManager 获取qp包信息

API兼容性:
QRN:v1.7.0
iOS:80011129
Android:60001153

biz_assign_version 自定义版本号获取兼容性:
QRN:v4.9.0
iOS:80011242
Android:60001390

getQpPotentialLatestVersion 获取qp即将更新到的版本:
iOS:80011331
Android:60001621

loadOrDownloadHybridId 根据hybridId获取qp的最新版本并加载: iOS:80011359
android:60001693
hos:50000121

QPInfoManager用来获取qp包版本等qp包信息

引入

import { QPInfoManager } from 'qunar-react-native';

API

QPInfoManager.getOriginQpInfo(hybridId, callBack, failCallBack)

根据hybridId获取qp包信息。

QPInfoManager.getQpInfo(hybridId, callBack, failCallBack)

会自动根据当前平台尝试添加_ios或者_android来获取qp包。 如果获取不到,再使用没添加后缀的hybird来获取。

存在2个API是为了解决有的业务HY和RN项目使用的是同一个hybridId,这个时候就可以使用getOriginQpInfo获取到hy项目的QP包版本

QPInfoManager.getQpPotentialLatestVersion(hybridId, callBack, failCallBack)

根据hybridId获取qp即将更新到的版本;本地如果有就返回本地的版本,本地如果没有返回当前线上最新版本。

QPInfoManager.getQpDataWithURL(url, hybridId, isStringType, callBack, failCallBack)

根据 qp 包中的资源 URL 和 hybridId 获取对应资源内容。 isStringType:指定资源是否为string类型

  • 如果资源是文本类型(如 JSON、JS 函数等),可以将isStringType设为true,那么资源将以字符串形式返回。.
  • 如果资源是非文本类型(如 PNG、TTF 或其他二进制数据),可以将isStringType设为false,那么资源将以 base64 字符串返回。

QPInfoManager.loadOrDownloadHybridId(hybridId, callBack, failCallBack)

根据hybridId获取qp的最新版本

  • 本地优先:若本地已存在最新版本,直接返回成功;
  • 更新:本地版本滞后时,触发下载;
  • 生效时机:若旧版本正在运行,新下载的包不会立即替换,而是延迟至下次启动时加载,避免影响当前业务连续性。否则,本次生效
参数 类型 描述 备注
code number 0 成功,非 0 失败 -
message string 失败原因 -

使用说明

'use strict';

import { QPInfoManager } from 'qunar-react-native';

//使用getOriginQpInfo
<TouchableHighlight
    style={styles.wrapper}
    //传入hybridId  这里举例传入 'bnbrn'
    onPress={() => {QPInfoManager.getOriginQpInfo('bnbrn', (callBack)=>{
        Toast.show('获取qp包信息成功', Toast.SHORT, Toast.MIDDLE);
        console.log(callBack);
    }, (err)=>{
        Toast.show(err.message, Toast.SHORT, Toast.MIDDLE);
        console.log(err.message);
    })
}}>
    <View style={styles.text}>
        <Text>点击获取qp包信息</Text>
    </View>
</TouchableHighlight>

//使用getQpInfo
<TouchableHighlight
    style={styles.wrapper}
    //传入hybridId  这里举例传入 'bnbrn'
    onPress={() => {QPInfoManager.getQpInfo('bnbrn', (callBack)=>{
        Toast.show('获取qp包信息成功', Toast.SHORT, Toast.MIDDLE);
        console.log(callBack);
    }, (err)=>{
        Toast.show(err.message, Toast.SHORT, Toast.MIDDLE);
        console.log(err.message);
    })
}}>

//使用getQpPotentialLatestVersion
<TouchableHighlight
    style={styles.wrapper}
    //传入hybridId  这里举例传入 'bnbrn'
    onPress={() => {QPInfoManager.getQpPotentialLatestVersion('bnbrn', (callBack)=>{
        Toast.show('获取qp包即将更新版本成功', Toast.SHORT, Toast.MIDDLE);
        console.log(callBack);
    }, (err)=>{
        Toast.show(err.message, Toast.SHORT, Toast.MIDDLE);
        console.log(err.message);
    })
}}>

//使用QPInfoManager.getQpDataWithURL
<TouchableHighlight
    style={styles.wrapper}
    //传入hybridId  这里举例传入 'flight_tejia'
    onPress={() => {QPInfoManager.getQpDataWithURL('https://q.qunarzz.com/low_price_rn/prd/commons@c96faaefc106a77c0988.js','flight_tejia', true,(res)=>{
        console.log(res);
    }, (err)=>{
        console.log(err.message);
    })
}}>

    <View style={styles.text}>
        <Text>点击获取qp包信息</Text>
    </View>
</TouchableHighlight>

// 使用loadOrDownloadHybridId
<Button
  text="通过loadOrDownloadHybridId加载qp"
  style={styles.button}
  onPress={() => {
    QPInfoManager.loadOrDownloadHybridId(text, (data) => {
      alert(JSON.stringify(data)); // {code, message}
    }, (err) => {
      alert(JSON.stringify(err)); // {code, message}
    });
  }}
/>