uni-app 最新机型识别问题:最新的mate60 IPhone15 等新型机型通过uni.getSystemInfo识别不到机型

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app 最新机型识别问题:最新的mate60 IPhone15 等新型机型通过uni.getSystemInfo识别不到机型

开发环境 版本号 项目创建方式
Windows Windows 11 家庭中文版 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

手机系统:iOS

手机系统版本号:iOS 17

手机厂商:苹果

手机机型:Iphone 15

页面类型:vue

vue版本:vue3

打包方式:云端

App下载地址或H5网址:https://i.xhd.cn/app/


示例代码:

  • 这里是显示的地方

```html
<uni-list-item title="姓名" :rightText="userInfo.name" />  
<uni-list-item title="账号" :rightText="userInfo.email" />  
<uni-list-item title="所属机构" :rightText="userInfo.organizationName" />  
<uni-list-item title="设备品牌" :rightText="deviceInfo.brand" />  
<uni-list-item title="设备型号" :rightText="deviceInfo.model==='none'?'空':deviceInfo.model" />  
<uni-list-item title="操作系统版本" :rightText="deviceInfo.system" />  
<uni-list-item title="App版本" :rightText="deviceInfo.appVersion" />  
<uni-list-item title="网络类型" :rightText="networkType" />  
<uni-list-item title="当前时间" :rightText="currentTime" />  
<uni-list-item title="屏幕像素" :rightText="pixel" />

这是调用

uni.getSystemInfo({
    success(info) {
        console.log('infoinfoinfo', cid)
        setUserDeviceInfo(info)
        saveClientId(cid)
        const defaultIndex = Number(getWorkDefaultSync())
        const appData = {
            clientId: cid,
            startTime: parseTime(+new Date()),
            endTime: getUserRecordTime() || '',
            loginPlatform: info.platform === 'android' ? 2 : 1, // IOS android
            deviceName: info.model, // 设备型号 RNE-AL00
            systemVersion: info.system, // 手机系统版本号 如 Android 8.0.0
            appVersion: 'V' + info.appVersion, // 当前手机的APP版本号
            defaultIndexPages: defaultIndex === 0 ? '数字新航道App' : defaultIndex === 1 ? 'AMS' : 'EAS'
        }
    }
})

这是获取机型数据

const initData = (option) => {
    userInfo.value = option.userInfo ? JSON.parse(option.userInfo) : {},
    deviceInfo.value = getUserDeviceInfo() || {}
    if (deviceInfo.value.appVersion) {
        deviceInfo.value.appVersion = 'V' + deviceInfo.value.appVersion
    }
}

操作步骤:

打开APP直接调用uni.getSystemInfo


---

预期结果:


希望能获取正确的机型

实际结果:

返回的是unknow


---

![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20231124/80d8c9981ea4ef591f12bf43b94fd8d7.png)

---

bug描述:


最新手机 mate60 mate60 pro 还有IPhone 15 通过 uni.getSystemInfo 无法获取机型

5 回复

哎呀 这个不能编辑嘛 排版错乱了


问题已确认,预计下个alpha修复

有什么临时解决方案吗,现在APP的热更新用到了这个方法

uni-app 中,uni.getSystemInfo 是一个常用的 API,用于获取设备的基本信息,包括设备型号、操作系统版本等。然而,对于一些最新发布的机型(如华为 Mate 60、iPhone 15 等),可能会出现无法正确识别机型的情况。

原因分析

  1. SDK 更新滞后uni-app 的底层依赖于微信小程序、H5、App 等平台的 SDK。如果这些 SDK 没有及时更新,可能无法识别最新的设备型号。
  2. 设备信息库未更新uni.getSystemInfo 返回的设备信息可能依赖于设备信息库,如果库中没有最新的设备型号,就无法正确识别。

解决方案

  1. 更新 uni-app 版本:确保你使用的是最新版本的 uni-app,因为新版本通常会包含对最新设备的支持。

    npm update [@dcloudio](/user/dcloudio)/uni-app
  2. 手动处理设备型号:如果 uni.getSystemInfo 无法正确识别设备型号,可以尝试通过其他方式获取设备信息,或者手动处理设备型号。

    uni.getSystemInfo({
        success: function (res) {
            let model = res.model;
            if (model === 'Unknown' || !model) {
                // 手动处理设备型号
                model = 'Huawei Mate 60'; // 或者其他逻辑
            }
            console.log('Device Model:', model);
        }
    });
  3. 使用原生代码获取设备信息:如果 uni-app 的 API 无法满足需求,可以考虑使用原生代码(如 Android 的 Java/Kotlin 或 iOS 的 Objective-C/Swift)来获取设备信息,然后通过 uni-app 的插件机制将信息传递给前端。

  4. 反馈给 uni-app 官方:如果问题持续存在,可以向 uni-app 官方反馈,请求他们更新设备信息库或 SDK。

示例代码

以下是一个简单的示例,展示如何在 uni-app 中获取设备信息并处理未知设备型号的情况:

uni.getSystemInfo({
    success: function (res) {
        let model = res.model;
        if (model === 'Unknown' || !model) {
            // 手动处理设备型号
            model = 'Huawei Mate 60'; // 或者其他逻辑
        }
        console.log('Device Model:', model);
    },
    fail: function (err) {
        console.error('Failed to get system info:', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!