UNPKG

@qcwx_mediatom/quick-app-ad-sdk

Version:

mediatom快应用广告SDK

130 lines (120 loc) 3.8 kB
// utils/device.js import device from '@system.device'; import network from '@system.network'; import pkg from '@system.package'; export async function getDeviceInfo() { const info = { os: 'Quick', // Android / iOS osv: '', // 系统版本 devicetype: 0, // 0 = 手机,默认 connectiontype: 0, carrier: 0, brand: '', model: '', sw: 0, sh: 0, density: 0, orientation: 1, ua: '', verCodeOfHms: '', verCodeOfAG: '' }; // 封装 device.getInfo 为 Promise const getDevice = () => new Promise(resolve => { device.getInfo({ success(res) { info.osv = res.osVersionCode || ''; switch (res.deviceType) { case 'phone': info.devicetype = 0; break; case 'tablet': info.devicetype = 1; break; case 'tv': info.devicetype = 3; break; default: info.devicetype = 0; break; } info.brand = res.brand || ''; info.model = res.model || ''; info.sw = res.screenWidth || 0; info.sh = res.screenHeight || 0; info.density = res.screenDensity || 0; info.ua = buildUserAgent(info); resolve(); }, fail(e) { console.warn('[device.getInfo] 获取失败', e); resolve(); } }); }); const getNetwork = () => new Promise(resolve => { network.getSimOperators({ success(data) { const operator = data.operators?.[0]?.operator; switch (operator) { case '46000': case '46002': case '46004': case '46007': info.carrier = 1; break; case '46001': case '46006': case '46009': info.carrier = 2; break; case '46003': case '46005': case '46011': info.carrier = 3; break; default: info.carrier = 0; break; } resolve(); }, fail() { resolve(); } }); }); const getNetworkType = () => new Promise(resolve => { network.getType({ success(res) { switch (res.type) { case 'wifi': info.connectiontype = 1; break; case '2g': info.connectiontype = 2; break; case '3g': info.connectiontype = 3; break; case '4g': info.connectiontype = 4; break; case '5g': info.connectiontype = 5; break; case 'others': info.connectiontype = 11; break; default: info.connectiontype = 0; break; } resolve(); }, fail() { resolve(); } }); }); await Promise.all([getDevice(), getNetwork(), getNetworkType()]); if (info.brand.toLowerCase() === 'huawei') { const huawei = await getHuaweiVersions(); info.verCodeOfHms = huawei.verCodeOfHms || ''; info.verCodeOfAG = huawei.verCodeOfAG || ''; } return info; } function buildUserAgent(deviceInfo = {}) { const { os = 'UnknownOS', osv = '', brand = '', model = '', sw = 0, sh = 0, density = 0 } = deviceInfo; const resolution = sw && sh ? `${sw}x${sh}` : 'unknown'; return `QuickApp/${os} ${osv} (${brand} ${model}; ${resolution}; DPR:${density})`; } async function getHuaweiVersions() { const versions = { verCodeOfHms: '', verCodeOfAG: '' }; await Promise.all([ new Promise(resolve => { pkg.getInfo({ package: 'com.huawei.hms', success(res) { versions.verCodeOfHms = res.versionName || ''; resolve(); }, fail: () => resolve() }); }), new Promise(resolve => { pkg.getInfo({ package: 'com.huawei.appmarket', success(res) { versions.verCodeOfAG = res.versionName || ''; resolve(); }, fail: () => resolve() }); }) ]); return versions; }