DeviceInfo 设备和 App 信息

API 兼容性:
QRN:v1.0.0-RC
iOS:80011115
Android:60001130

getInfo 的 API 兼容性:
QRN:v2.6.0-rc.1
iOS:80011142
Android:60001180

uuid 和 isIphoneX 的 API 兼容性:
QRN:v2.6.0-rc.1
iOS:80011142
Android:60001180

userId 和 idfa 的 API 兼容性:
QRN:v3.2.0
iOS:80011150
Android:60001203

Android 添加获取挖孔屏信息:
QRN:v3.5.0
Android:60001219

添加获取沉浸式信息:
Android QRN:v3.7.0
Android vid:60001224
iOS QRN:v3.8.0
iOS vid:80011162

获取真实渠道号rCid:
Android QRN:v4.5.86
Android vid:60001477

添加应用内分屏/平行窗口字段:
Android QRN:v4.5.102
Android vid:60001495

DeviceInfo 可以用来获取 App 的信息。

引入

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

API

DeviceInfo.getInfo (callback)

获取带有 qp包 信息 的 APP 信息

数据结构

直接通过 DeviceInfo 获取到的数据结构,不包含 qp包 信息

注:这种方式获取的数据是react框架初始化的时候获取到的值,针对运行过程中随着游客模式、登录状态变化、依赖后端下发而取值发生变化的id不建议直接使用,需要改用同步或getInfo接口获取:可变字段有:uid mac idfa gid sid fp uuid userId

DeviceInfo = {
    isIOS: bool, //是否是iOS
    isAndroid: bool, //是否是android
    vid: string, //app vid
    pid: string, //app pid
    cid: string, //渠道号
    rCid: string, //adr特有字段,代表当前运行apk真实渠道号,生效版本(60001477+)
    splitSupported: bool, //adr特有字段,代表当前运行设备是否支持应用内分屏/平行窗口(60001495+)
    isActivityEmbedded: bool, //adr特有字段,代表当前运行页面是否在分屏/平行窗口下,渲染时获取,尽量不要缓存(60001495+)
    uid: string, //设备唯一号,会随着游客模式变化而变化,推荐使用getInfo获取
    sid: string, //服务器下发的标示,推荐使用getInfo获取
    gid: string, //服务器为每个设备下发的唯一编号,推荐使用getInfo获取
    mac: string, //mac地址,在iOS7之前用来替代UDID,iOS7后,该接口永远返回 02:00:00:00:00:00 ,推荐使用getInfo获取
    model: string, //设备信息,返回为iPhone 5s (GSM)、iPhone 6 Plus等,可以用来对特定的设备优化
    manufacturer: string, //制造商信息,返回apple、huawei等
    platform: string, //手机平台,返回iOS或者android
    osVersion: string, //手机系统版本号,比如9.3等
    scheme: string, //当前APP的Scheme跳转协议头,如qunariphone、qunaraphone等
    qrn_version: sting, //QRN 版本,四月底版本为v1.0.0-RC

    //iOS:80011117 Android:60001134 新增API
    releaseType: string, //QRN lib类型,Android可能为dev、beta和release,iOS可能为beta和release

    //iOS:80011143 Android:60001185 新增API
    isIphoneX: bool,
    uuid: string, //登录用户的uuid,随着用户登录状态变化而变化,推荐使用getInfo获取

    //iOS:80011150 Android:60001203 新增API
    userId: string,//登录用户的唯一标识,随着用户登录状态变化而变化,推荐使用getInfo获取
    idfa: string,//机器的identifierForVendor:系统根据应用的bunld id前两个域生产的唯一标示,仅 iOS 有,随着游客模式变化而变化,推荐使用getInfo获取

    //Android:60001224 新增API
    immersiveInfo: {
        immersive: true, // 是否需要沉浸式适配
        immersiveOffset: 30, //获取沉浸式偏移高度
    },
};

通过 getInfo 接口获取的带有 qp包 的数据结构

//iOS:80011142 Android:60001180 新增API
DeviceInfo.getInfo = {
	isIOS: bool, //是否是iOS
	isAndroid: bool, //是否是android
	vid: string, //app vid
	pid: string, //app pid
	cid: string, //渠道号
	rCid: string, //adr特有字段,代表当前运行apk真实渠道号,生效版本(60001477+)
	splitSupported: bool, //adr特有字段,代表当前运行设备是否支持应用内分屏/平行窗口(60001495+)
    isActivityEmbedded: bool, //adr特有字段,代表当前运行页面是否在分屏/平行窗口下,渲染时获取,尽量不要缓存(60001495+)
    uid: string, //设备唯一号
	sid: string, //服务器下发的标示
	gid: string, //服务器为每个设备下发的唯一编号
	mac: string, //mac地址,在iOS7之前用来替代UDID,iOS7后,该接口永远返回 02:00:00:00:00:00
	model: string, //设备信息,返回为iPhone 5s (GSM)、iPhone 6 Plus等,可以用来对特定的设备优化
	manufacturer: string, //制造商信息,返回apple、huawei等
	platform: string, //手机平台,返回iOS或者android
	osVersion: string, //手机系统版本号,比如9.3等
	scheme: string, //当前APP的Scheme跳转协议头,如qunariphone、qunaraphone等
	qrn_version: sting, //QRN 版本,四月底版本为v1.0.0-RC

	//iOS:80011117 Android:60001134 新增API
	releaseType: string, //QRN lib类型,Android可能为dev、beta和release,iOS可能为beta和release

	//iOS:80011143 Android:60001185 新增API
	isIphoneX: boolean,
    uuid: string,

    //iOS:80011150 Android:60001203 新增API
    userId: string,
    idfa: string,

	qpInfo:{
		'android_vid': string, //qp包适用的最低安卓vid
        'hybridid': string,    //qp包的hybridId
        'iOS_vid': string,     //qp包适用的最低iOSvid
        'pid': string,         //客户端的pid
        'platform': string,    //所在平台 iOS/Android
        'rnpackage': boolean,  //是否是rn的qp包
        'timestamp': number,   //qp包的时间戳
        'version': string,     //qp包的版本号
        'biz_assign_version': string, //qp包业务自定义版本号,通过在yaml文件里传入,在此方法中获取。iOSVid>=80011239,adrVid>=60001382
	}

	//Android:60001219 新增API
	notchInfo:{
		'notch': boolean,	//是不是挖孔屏
		'notchSize':{
			'width': number,	//挖孔屏宽度
			'height': number,	//挖孔屏高度
		}
	},

	//Android:60001224 新增API
	immersiveInfo:{
    	immersive: true, // 是否需要沉浸式适配
    	immersiveOffset:30 //获取沉浸式偏移高度
	}
}

使用说明

直接通过 DeviceInfo 获取,不包含 qp包 信息

注:这种方式获取的数据是react框架初始化的时候获取到的值,针对运行过程中随着游客模式、登录状态变化、依赖后端下发而取值发生变化的id不建议直接使用,需要改用同步或getInfo接口获取:可变字段有:uid mac idfa gid sid fp uuid userId

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

//app平台是否是iOS或者android,返回true或者false
var isIOS = DeviceInfo.isIOS;
var isAndroid = DeviecInfo.isAndroid;


var vid = DeviceInfo.vid;	//app vid
var pid = DeviecInfo.pid;	//app pid
var cid = DeviceInfo.cid;	//渠道号
var rCid = DeviceInfo.rCid;	//adr特有字段,代表当前运行apk真实渠道号,生效版本(60001477+)
var splitSupported = DeviceInfoData.splitSupported; //adr特有字段,代表当前运行设备是否支持应用内分屏/平行窗口(60001495+)
var isActivityEmbedded = DeviceInfoData.isActivityEmbedded; //adr特有字段,代表当前运行页面是否在分屏/平行窗口下,渲染时获取,尽量不要缓存(60001495+)
var uid = DeviceInfo.uid;	//设备唯一号,会随着游客模式变化而变化,推荐使用getInfo获取
var sid = DeviceInfo.sid;	//服务器下发的标示,推荐使用getInfo获取
var gid = DeviceInfo.gid;	//服务器为每个设备下发的唯一编号,推荐使用getInfo获取

//mac地址,在iOS7之前用来替代UDID,iOS7后,该接口永远返回 02:00:00:00:00:00,随游客模式变化而变化,推荐使用getInfo获取
var mac = DeviceInfo.mac;

//设备信息,返回为iPhone 5s (GSM)、iPhone 6 Plus等,可以用来对特定的设备优化
var model = DeviceInfo.model;

var manufacturer = DeviceInfo.manufacturer;	//制造商信息,返回apple、huawei等
var platform = DeviceInfo.platform;			//手机平台,返回iOS或者android
var osVersion = DeviceInfo.osVersion; 		//手机系统版本号,比如9.3等

var scheme = DeviceInfo.scheme;	// 当前APP的Scheme跳转协议头,如qunariphone、qunaraphone等

var qrn_version = DeviceInfo.qrn_version; 	//QRN 版本,四月底版本为v1.0.0-RC

var releaseType = DeviceInfo.releaseType; //QRN Lib版本 线上为release

var uuid = DeviceInfo.uuid; //登录用户的uuid,随着用户登录状态变化而变化,推荐使用getInfo获取

var isIphoneX = DeviceInfo.isIphoneX; //是否是isIphoneX

var userId = DeviceInfo.userId;	//用户Qunar唯一标识,随着用户登录状态变化而变化,建议使用getInfo获取

var idfa = DeviceInfo.idfa; //机器的identifierForVendor:系统根据应用的bunld id前两个域生产的唯一标示,仅iOS有,随着游客模式变化而变化,推荐使用getInfo获取

var immersiveInfo =	DeviceInfo.immersiveInfo  //Android:60001224 新增API

通过 getInfo 接口获取

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

DeviceInfo.getInfo((DeviceInfoData) => {
    var vid = DeviceInfoData.vid; //app vid
    var pid = DeviceInfoData.pid; //app pid
    var cid = DeviceInfoData.cid; //渠道号
    var rCid = DeviceInfoData.rCid; //adr特有字段,代表当前运行apk真实渠道号,生效版本(60001477+)
    var splitSupported = DeviceInfoData.splitSupported; //adr特有字段,代表当前运行设备是否支持应用内分屏/平行窗口(60001495+)
    var isActivityEmbedded = DeviceInfoData.isActivityEmbedded; //adr特有字段,代表当前运行页面是否在分屏/平行窗口下,渲染时获取,尽量不要缓存(60001495+)
    var uid = DeviceInfoData.uid; //设备唯一号
    var sid = DeviceInfoData.sid; //服务器下发的标示
    var gid = DeviceInfoData.gid; //服务器为每个设备下发的唯一编号

    //mac地址,在iOS7之前用来替代UDID,iOS7后,该接口永远返回 02:00:00:00:00:00
    var mac = DeviceInfoData.mac;

    //设备信息,返回为iPhone 5s (GSM)、iPhone 6 Plus等,可以用来对特定的设备优化
    var model = DeviceInfoData.model;

    var manufacturer = DeviceInfoData.manufacturer; //制造商信息,返回apple、huawei等
    var platform = DeviceInfoData.platform; //手机平台,返回iOS或者android
    var osVersion = DeviceInfoData.osVersion; //手机系统版本号,比如9.3等

    var scheme = DeviceInfoData.scheme; // 当前APP的Scheme跳转协议头,如qunariphone、qunaraphone等

    var qrn_version = DeviceInfoData.qrn_version; //QRN 版本,四月底版本为v1.0.0-RC

    var releaseType = DeviceInfoData.releaseType; //QRN Lib版本 线上为release

    var uuid = DeviceInfoData.uuid; //登录用户的uuid

    var isIphoneX = DeviceInfoData.isIphoneX; //是否是isIphoneX

    var userId = DeviceInfoData.userId; //用户Qunar唯一标识

    var idfa = DeviceInfoData.idfa; //机器的identifierForVendor:系统根据应用的bunld id前两个域生产的唯一标示,仅 iOS 有

    if (DeviceInfoData.qpInfo) {
        var android_vid = DeviceInfoData.qpInfo.android_vid; //qp包适用的最低安卓vid
        var hybridid = DeviceInfoData.qpInfo.hybridid; //qp包的hybridId
        var iOS_vid = DeviceInfoData.qpInfo.iOS_vid; //qp包适用的最低iOSvid
        var pid = DeviceInfoData.qpInfo.pid; //客户端的pid
        var platform = DeviceInfoData.qpInfo.platform; //所在平台 iOS/Android
        var rnpackage = DeviceInfoData.qpInfo.rnpackage; //是否是rn的qp包
        var timestamp = DeviceInfoData.qpInfo.timestamp; //qp包的时间戳
        var version = DeviceInfoData.qpInfo.version; //qp包的版本号
        var biz_assign_version = DeviceInfoData.qpInfo.biz_assign_version; //qp包业务自定义版本号,通过在yaml文件里传入,在此方法中获取。iOSVid>=80011239,adrVid>=60001382
    }

    if (DeviceInfoData.notchInfo) {
        var notch = DeviceInfoData.notchInfo.notch;
        var notchSize = DeviceInfoData.notchInfo.notchSize;
    }

    if (DeviceInfoData.immersiveInfo) {
        var immersive = DeviceInfoData.immersiveInfo.immersive; //是否需要沉浸式适配
        var immersiveOffset = DeviceInfoData.immersiveInfo.immersiveOffset; //获取沉浸式偏移高度
    }
});