uni-app 最近无法获取设备码

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

uni-app 最近无法获取设备码

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:win10

HBuilderX类型:正式

HBuilderX版本号:3.95

手机系统:Android

手机系统版本号:Android 11

手机厂商:华为

手机机型:vivo iqoo u5x

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

plus.push.getClientInfoAsync(info => { console.log(info) // 输出为{} }, (e) => { console.log(‘Failed’); console.log(JSON.stringify(e)); })


操作步骤:
1

预期结果:
1

实际结果:
1

bug描述:
昨天打包的app不少用户都无法获取设备码,我的安卓倒是没问题是鸿蒙系统,之前是一直都没问题的,正常和发现问题的均是用HBX3.94,升级为最新版3.95后,问题依然存在。3.94在线离线打包都试过,3.95只试了在线打包。何时能解决?

3 回复

3.96可以获取到


现在可以了 ,我记得没改过配置,也没升级,以前没问题的,后来打个新包就出问题了。 现在能获取了,没搞懂到底是什么问题,我猜可能是官方打包服务器正常了。

uni-app 中,如果你最近无法获取设备码,可能是由于以下几个原因导致的。以下是一些可能的原因和解决方法:

1. 权限问题

  • 原因: 在 Android 6.0 及以上版本中,获取设备码(如 IMEI)需要动态申请权限。
  • 解决方法: 确保在 manifest.json 中正确配置了权限,并在代码中动态申请权限。
// manifest.json
{
  "permission": {
    "android.permission.READ_PHONE_STATE": {}
  }
}

在代码中动态申请权限:

uni.authorize({
  scope: 'scope.record',
  success() {
    // 权限申请成功
    uni.getSystemInfo({
      success(res) {
        console.log(res.deviceId); // 获取设备码
      }
    });
  },
  fail() {
    // 权限申请失败
    console.log('权限申请失败');
  }
});

2. 平台限制

  • 原因: 在某些平台(如 iOS)上,获取设备码(如 IMEI)是受限的,可能无法直接获取。
  • 解决方法: 使用其他唯一标识符替代,如 UUIDdeviceId
uni.getSystemInfo({
  success(res) {
    console.log(res.deviceId); // 获取设备唯一标识符
  }
});

3. API 变更

  • 原因: uni-app 的 API 可能会随着版本更新而发生变化,导致之前获取设备码的方式失效。
  • 解决方法: 查阅最新的 uni-app 文档,确保使用正确的 API。
uni.getSystemInfo({
  success(res) {
    console.log(res.deviceId); // 获取设备唯一标识符
  }
});

4. 插件或模块问题

  • 原因: 如果你使用了第三方插件或模块来获取设备码,可能是插件或模块本身存在问题或未更新。
  • 解决方法: 检查插件或模块的文档,确保其兼容性,并尝试更新到最新版本。

5. 设备或系统问题

  • 原因: 某些设备或系统版本可能存在兼容性问题,导致无法获取设备码。
  • 解决方法: 尝试在其他设备或系统版本上测试,确认是否为设备或系统问题。

6. 调试模式

  • 原因: 在调试模式下,某些设备码可能无法正常获取。
  • 解决方法: 尝试在正式环境下测试,确保问题不是由调试模式引起的。

7. 网络问题

  • 原因: 如果设备码的获取依赖于网络请求,网络问题可能导致获取失败。
  • 解决方法: 检查网络连接,确保网络正常。

8. 代码逻辑问题

  • 原因: 代码逻辑可能存在错误,导致无法正确获取设备码。
  • 解决方法: 仔细检查代码逻辑,确保没有错误。

9. uni-app 版本问题

  • 原因: 你使用的 uni-app 版本可能存在 bug,导致无法获取设备码。
  • 解决方法: 尝试更新 uni-app 到最新版本,查看问题是否解决。

10. 设备码获取方式

  • 原因: 不同的设备码获取方式可能适用于不同的场景。
  • 解决方法: 根据具体需求选择合适的设备码获取方式。
// 获取设备唯一标识符
uni.getSystemInfo({
  success(res) {
    console.log(res.deviceId); // 获取设备唯一标识符
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!