uniapp 设备信息知识

1,460 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

同步形式获取系统信息同步接口 uni.getSystemInfoSync()

参数说明平台差异说明
brand设备品牌App、微信小程序、百度小程序、字节跳动小程序、飞书小程序、QQ小程序
model设备型号全平台支持。H5(3.1.10+)新增PC
pixelRatio设备像素比
screenWidth屏幕宽度
screenHeight屏幕高度
windowWidth可使用窗口宽度
windowHeight可使用窗口高度
windowTop可使用窗口的顶部位置App、H5
windowBottom可使用窗口的底部位置App、H5
statusBarHeight状态栏的高度字节跳动小程序不支持
navigationBarHeight导航栏的高度百度小程序
titleBarHeight标题栏高度支付宝小程序
language应用设置的语言字节跳动小程序不支持
version引擎版本号H5不支持
storage设备磁盘容量支付宝小程序
currentBattery当前电量百分比支付宝小程序
appName宿主APP名称字节跳动小程序
AppPlatformApp平台QQ小程序
host宿主平台百度小程序
app当前运行的客户端支付宝小程序
cacheLocation上一次缓存的位置信息百度小程序
system操作系统版本
platform客户端平台,值域为:iosandroidmac(3.1.10+)windows(3.1.10+)linux(3.1.10+)
fontSizeSetting用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px微信小程序、支付宝小程序、百度小程序、QQ小程序
SDKVersion客户端基础库版本支付宝小程序和H5不支持
swanNativeVersion宿主平台版本号百度小程序
albumAuthorized允许微信使用相册的开关(仅 iOS 有效)微信小程序
cameraAuthorized允许微信使用摄像头的开关微信小程序
locationAuthorized允许微信使用定位的开关微信小程序
microphoneAuthorized允许微信使用麦克风的开关微信小程序
notificationAuthorized允许微信通知的开关微信小程序
notificationAlertAuthorized允许微信通知带有提醒的开关(仅 iOS 有效)微信小程序
notificationBadgeAuthorized允许微信通知带有标记的开关(仅 iOS 有效)微信小程序
notificationSoundAuthorized允许微信通知带有声音的开关(仅 iOS 有效)微信小程序
bluetoothEnabled蓝牙的系统开关微信小程序
locationEnabled地理位置的系统开关微信小程序
wifiEnabledWi-Fi 的系统开关微信小程序
safeArea在竖屏正方向下的安全区域App、H5、微信小程序
safeAreaInsets在竖屏正方向下的安全区域插入位置(2.5.3+)App、H5、微信小程序
deviceId设备 id非 App 端由 uni-app 框架生成并存储,清空 Storage 会导致改变
try {
    const res = uni.getSystemInfoSync();
    console.log(res) // 设备信息
} catch (e) {
    // error
}

获取设备标记保证唯一性

Android10以上,部分国产手机支持OAID,匿名设备标识符(OAID)

但想获取imei等信息时需要弹框让用户授权,

  • H5 生成一个uuid放入本地缓存做为标识,但是用户I清空缓存就无
  • 小程序: 也是跟H5一样,或者弹框请求用户授权,获取用户的微信唯一ID。
  • App iOS平台: iOS并不提供imei的获取API,可通过plus.device.getInfo 可以获得设备的唯一标识(uuid),这个id其实也是一种随机数概念,类似于h5的uv计算,卸载app重装会发生变化;

iOS有一个叫idfa的广告识别符,通过Native.js获取,:idfa介绍

Android10以下可以得到imei,用H5+的形式调用plus.device.getInfo 可以获得设备的国际移动设备身份码(imei)。注意很多新手机在获取imei时会弹框要求用户授权。

下面是javascript版的uuid生成方式函数

export const genUUID = () => {
  // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
  return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)
}

// Generate four random hex digits.
function S4 () {
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
}

// Generate a pseudo-GUID by concatenating random hexadecimal.
export function guid () {
  return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4())
}