小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
同步形式获取系统信息同步接口 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名称 | 字节跳动小程序 |
AppPlatform | App平台 | QQ小程序 |
host | 宿主平台 | 百度小程序 |
app | 当前运行的客户端 | 支付宝小程序 |
cacheLocation | 上一次缓存的位置信息 | 百度小程序 |
system | 操作系统版本 | |
platform | 客户端平台,值域为:ios 、android 、mac(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 | 地理位置的系统开关 | 微信小程序 |
wifiEnabled | Wi-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())
}