提交 528dddad 编写于 作者: Q qiang

Merge branch 'getSystemInfo' into next

......@@ -2,4 +2,5 @@ node_modules/
.project
unpackage/
.vscode/
.idea
.DS_Store
......@@ -13,7 +13,7 @@
|参数|说明|平台差异说明|
|:-|:-|:-|
|brand|手机品牌|微信小程序|
|brand|手机品牌|微信小程序、百度小程序、头条小程序、QQ小程序|
|model|手机型号||
|pixelRatio|设备像素比||
|screenWidth|屏幕宽度||
......@@ -22,30 +22,51 @@
|windowHeight|可使用窗口高度||
|windowTop|可使用窗口的顶部位置|5+App、H5|
|windowBottom|可使用窗口的底部位置|5+App、H5|
|statusBarHeight|状态栏的高度||
|language|应用设置的语言||
|version|引擎版本号|微信小程序、5+App|
|statusBarHeight|状态栏的高度|头条小程序不支持|
|navigationBarHeight|导航栏的高度|百度小程序|
|titleBarHeight|标题栏高度|支付宝小程序|
|language|应用设置的语言|头条小程序不支持|
|version|引擎版本号|H5不支持|
|storage|设备磁盘容量|支付宝小程序|
|currentBattery|当前电量百分比|支付宝小程序|
|appName|宿主APP名称|头条小程序|
|AppPlatform|App平台|QQ小程序|
|host|宿主平台|百度小程序|
|app|当前运行的客户端|支付宝小程序|
|cacheLocation|上一次缓存的位置信息|百度小程序|
|system|操作系统版本||
|platform|客户端平台,值域为:`ios``android`||
|fontSizeSetting|用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px|微信小程序|
|SDKVersion|客户端基础库版本|微信小程序、5+App|
|safeArea|在竖屏正方向下的安全区域|微信小程序|
|fontSizeSetting|用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px|微信小程序、支付宝小程序、百度小程序、QQ小程序|
|SDKVersion|客户端基础库版本|支付宝小程序和H5不支持|
|swanNativeVersion|宿主平台版本号|百度小程序|
|albumAuthorized | 允许微信使用相册的开关(仅 iOS 有效) |微信小程序|
|cameraAuthorized | 允许微信使用摄像头的开关 |微信小程序|
|locationAuthorized | 允许微信使用定位的开关 |微信小程序|
|microphoneAuthorized | 允许微信使用麦克风的开关 |微信小程序|
|notificationAuthorized | 允许微信通知的开关 |微信小程序|
|notificationAlertAuthorized | 允许微信通知带有提醒的开关(仅 iOS 有效) |微信小程序|
|notificationBadgeAuthorized | 允许微信通知带有标记的开关(仅 iOS 有效) |微信小程序|
|notificationSoundAuthorized | 允许微信通知带有声音的开关(仅 iOS 有效) |微信小程序|
|bluetoothEnabled | 蓝牙的系统开关 |微信小程序|
|locationEnabled | 地理位置的系统开关 |微信小程序|
|wifiEnabled | Wi-Fi 的系统开关 |微信小程序|
|safeArea|在竖屏正方向下的安全区域|5+App、H5、微信小程序|
**Tips**
- 屏幕高度=状态栏高度+原生导航栏高度+可使用窗口高度+原生tabbar高度
- H5端,windowHeight不包含NavigationBar和TabBar的高度,windowTop等于NavigationBar高度,windowBottom等于TabBar高度,statusBarHeight为0
- H5端,windowHeight不包含NavigationBar和TabBar的高度,windowTop等于NavigationBar高度,windowBottom等于TabBar高度,statusBarHeight为0
**safeArea 的结构**
**safeArea 的结构**
|参数 |类型 |说明 |
|:- |:- |
|left |Number |安全区域左上角横坐标 |
|right |Number |安全区域右下角横坐标 |
|top |Number |安全区域左上角纵坐标 |
|bottom |Number |安全区域右下角纵坐标 |
|width |Number |安全区域的宽度,单位逻辑像素 |
|:- |:- |:- |
|left |Number |安全区域左上角横坐标 |
|right |Number |安全区域右下角横坐标 |
|top |Number |安全区域左上角纵坐标 |
|bottom |Number |安全区域右下角纵坐标 |
|width |Number |安全区域的宽度,单位逻辑像素 |
|height |Number |安全区域的高度,单位逻辑像素 |
**示例**
......@@ -70,7 +91,7 @@ uni.getSystemInfo({
|参数|说明|平台差异说明|
|:-|:-|:-|
|brand|手机品牌|微信小程序、百度小程序|
|brand|手机品牌|微信小程序、百度小程序、头条小程序、QQ小程序|
|model|手机型号||
|pixelRatio|设备像素比||
|screenWidth|屏幕宽度||
......@@ -79,28 +100,50 @@ uni.getSystemInfo({
|windowHeight|可使用窗口高度||
|windowTop|可使用窗口的顶部位置|5+App、H5|
|windowBottom|可使用窗口的底部位置|5+App、H5|
|statusBarHeight|状态栏的高度|5+App、微信小程序、百度小程序|
|language|应用设置的语言|5+App、微信小程序、支付宝小程序、百度小程序|
|version|引擎版本号|5+App、微信小程序|
|statusBarHeight|状态栏的高度|头条小程序不支持|
|navigationBarHeight|导航栏的高度|百度小程序|
|titleBarHeight|标题栏高度|支付宝小程序|
|language|应用设置的语言|头条小程序不支持|
|version|引擎版本号|H5不支持|
|storage|设备磁盘容量|支付宝小程序|
|currentBattery|当前电量百分比|支付宝小程序|
|appName|宿主APP名称|头条小程序|
|AppPlatform|App平台|QQ小程序|
|host|宿主平台|百度小程序|
|app|当前运行的客户端|支付宝小程序|
|cacheLocation|上一次缓存的位置信息|百度小程序|
|system|操作系统版本||
|platform|客户端平台||
|fontSizeSetting|用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px|微信小程序、支付宝小程序、百度小程序|
|SDKVersion|客户端基础库版本|5+App、微信小程序、百度小程序、头条小程序|
|safeArea|在竖屏正方向下的安全区域|微信小程序|
|platform|客户端平台,值域为:`ios``android`||
|fontSizeSetting|用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px|微信小程序、支付宝小程序、百度小程序、QQ小程序|
|SDKVersion|客户端基础库版本|支付宝小程序和H5不支持|
|swanNativeVersion|宿主平台版本号|百度小程序|
|albumAuthorized | 允许微信使用相册的开关(仅 iOS 有效) |微信小程序|
|cameraAuthorized | 允许微信使用摄像头的开关 |微信小程序|
|locationAuthorized | 允许微信使用定位的开关 |微信小程序|
|microphoneAuthorized | 允许微信使用麦克风的开关 |微信小程序|
|notificationAuthorized | 允许微信通知的开关 |微信小程序|
|notificationAlertAuthorized | 允许微信通知带有提醒的开关(仅 iOS 有效) |微信小程序|
|notificationBadgeAuthorized | 允许微信通知带有标记的开关(仅 iOS 有效) |微信小程序|
|notificationSoundAuthorized | 允许微信通知带有声音的开关(仅 iOS 有效) |微信小程序|
|bluetoothEnabled | 蓝牙的系统开关 |微信小程序|
|locationEnabled | 地理位置的系统开关 |微信小程序|
|wifiEnabled | Wi-Fi 的系统开关 |微信小程序|
|safeArea|在竖屏正方向下的安全区域|5+App、H5、微信小程序|
**Tips**
- 使用注意同上getSystemInfo
- 使用注意同上getSystemInfo
**safeArea 的结构**
**safeArea 的结构**
|参数 |类型 |说明 |
|:- |:- |
|left |Number |安全区域左上角横坐标 |
|right |Number |安全区域右下角横坐标 |
|top |Number |安全区域左上角纵坐标 |
|bottom |Number |安全区域右下角纵坐标 |
|width |Number |安全区域的宽度,单位逻辑像素 |
|height |Number |安全区域的高度,单位逻辑像素 |
|:- |:- |:- |
|left |Number |安全区域左上角横坐标 |
|right |Number |安全区域右下角横坐标 |
|top |Number |安全区域左上角纵坐标 |
|bottom |Number |安全区域右下角纵坐标 |
|width |Number |安全区域的宽度,单位逻辑像素 |
|height |Number |安全区域的高度,单位逻辑像素 |
**示例**
......@@ -137,9 +180,9 @@ Android已经改进用户隐私保护,在很多新手机上,获取imei等信
平台差异说明
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|QQ程序|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|√|
**String 参数说明**
......
......@@ -24,7 +24,8 @@
},
"dependencies": {
"base64-arraybuffer": "^0.2.0",
"intersection-observer": "^0.7.0"
"intersection-observer": "^0.7.0",
"safe-area-insets": "^1.4.1"
},
"private": true,
"devDependencies": {
......
......@@ -23,10 +23,19 @@ export function getSystemInfo () {
const screenHeight = plus.screen.resolutionHeight
// 横屏时 iOS 获取的状态栏高度错误,进行纠正
var landscape = Math.abs(plus.navigator.getOrientation()) === 90
var statusBarHeight = plus.navigator.getStatusbarHeight()
var statusBarHeight = Math.round(plus.navigator.getStatusbarHeight())
if (ios && landscape) {
statusBarHeight = Math.min(20, statusBarHeight)
}
var safeAreaInsets
function getSafeAreaInsets () {
return {
left: 0,
right: 0,
top: titleNView ? 0 : statusBarHeight,
bottom: 0
}
}
// 判断是否存在 titleNView
var titleNView
var webview = getLastWebview()
......@@ -36,7 +45,22 @@ export function getSystemInfo () {
titleNView = style && style.titleNView
titleNView = titleNView && titleNView.type === 'default'
}
safeAreaInsets = ios ? webview.getSafeAreaInsets() : getSafeAreaInsets()
} else {
safeAreaInsets = ios ? plus.navigator.getSafeAreaInsets() : getSafeAreaInsets()
}
var windowHeight = Math.min(screenHeight - (titleNView ? (statusBarHeight + TITLEBAR_HEIGHT)
: 0) - (isTabBarPage() && tabBar.visible ? TABBAR_HEIGHT : 0), screenHeight)
var windowWidth = screenWidth
var safeArea = {
left: safeAreaInsets.left,
right: windowWidth - safeAreaInsets.right,
top: safeAreaInsets.top,
bottom: windowHeight - safeAreaInsets.bottom,
width: windowWidth - safeAreaInsets.left - safeAreaInsets.right,
height: windowHeight - safeAreaInsets.top - safeAreaInsets.bottom
}
return {
errMsg: 'getSystemInfo:ok',
brand: '',
......@@ -44,11 +68,8 @@ export function getSystemInfo () {
pixelRatio: plus.screen.scale,
screenWidth,
screenHeight,
// 安卓端 webview 宽度有时比屏幕多 1px,相比取最小值
// TODO screenWidth,screenHeight
windowWidth: screenWidth,
windowHeight: Math.min(screenHeight - (titleNView ? (statusBarHeight + TITLEBAR_HEIGHT)
: 0) - (isTabBarPage() && tabBar.visible ? TABBAR_HEIGHT : 0), screenHeight),
windowWidth,
windowHeight,
statusBarHeight,
language: plus.os.language,
system: plus.os.version,
......@@ -57,6 +78,7 @@ export function getSystemInfo () {
platform,
SDKVersion: '',
windowTop: 0,
windowBottom: 0
windowBottom: 0,
safeArea
}
}
}
import getWindowOffset from 'uni-platform/helpers/get-window-offset'
import safeAreaInsets from 'safe-area-insets'
const ua = navigator.userAgent
/**
......@@ -71,6 +72,14 @@ export function getSystemInfoSync () {
var system = `${osname} ${osversion}`
var platform = osname.toLocaleLowerCase()
var safeArea = {
left: safeAreaInsets.left,
right: windowWidth - safeAreaInsets.right,
top: safeAreaInsets.top,
bottom: windowHeight - safeAreaInsets.bottom,
width: windowWidth - safeAreaInsets.left - safeAreaInsets.right,
height: windowHeight - safeAreaInsets.top - safeAreaInsets.bottom
}
const {
top: windowTop,
......@@ -92,7 +101,8 @@ export function getSystemInfoSync () {
statusBarHeight,
system,
platform,
model
model,
safeArea
}
}
/**
......
......@@ -7760,6 +7760,10 @@ rxjs@^6.4.0:
dependencies:
tslib "^1.9.0"
safe-area-insets@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/safe-area-insets/-/safe-area-insets-1.4.1.tgz#89309e01a516dcd7d2fe012a9c4115182957bd8b"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1562349888578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册