You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native中获取设备IMEI码?已尝试react-native-imei无效

React Native 获取设备IMEI码的解决方案

针对 react-native-imei 库的问题排查

如果这个库无法正常工作,先排查以下常见原因:

  • 权限配置缺失
    Android 端需要添加 READ_PHONE_STATE 权限到 AndroidManifest.xml:

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    

    同时 Android 6.0+(API 23)需要动态申请权限,可搭配 react-native-permissions 库实现:

    import { request, PERMISSIONS } from 'react-native-permissions';
    
    const requestPhonePermission = async () => {
      const result = await request(PERMISSIONS.ANDROID.READ_PHONE_STATE);
      return result === 'granted';
    };
    
  • 库链接异常
    即使 RN 支持自动链接,仍可能出现链接失败情况,可尝试重新安装并链接:

    npm uninstall react-native-imei
    npm install react-native-imei
    npx pod-install  # iOS 端执行
    

    Android 端手动检查 settings.gradle 和 MainApplication.java 中是否正确引入了该库的模块。

  • 系统权限限制
    Android 10+(API 29)开始,普通应用无法获取 IMEI,只有系统签名的应用才能拿到 READ_PRIVILEGED_PHONE_STATE 权限——这意味着该库在 Android 10+ 设备上完全无法获取 IMEI,必须使用替代方案。

替代方案

Android 10+ 平台:使用 OAID

OAID(开放匿名设备标识符)是官方推荐的 IMEI 替代方案,可通过 react-native-oaid 库实现:

  1. 安装依赖:
npm install react-native-oaid
  1. 代码示例:
import OAID from 'react-native-oaid';

const getDeviceIdentifier = async () => {
  try {
    await OAID.requestPermission();
    const oaid = await OAID.getOAID();
    console.log('设备标识符(OAID):', oaid);
    return oaid;
  } catch (err) {
    console.error('获取OAID失败:', err);
  }
};

iOS 平台:使用 IDFA/IDFV

iOS 从 iOS 10 开始禁止获取 IMEI,可选择以下两种标识符:

  • IDFA(广告标识符):需用户授权,用于广告追踪场景
import { getIDFA } from 'react-native-idfa';

const getAdIdentifier = async () => {
  try {
    const idfa = await getIDFA();
    console.log('广告标识符(IDFA):', idfa);
    return idfa;
  } catch (err) {
    console.error('获取IDFA失败:', err);
  }
};
  • IDFV(应用唯一标识符):无需授权,每个应用独立,卸载重装后会变更
import DeviceInfo from 'react-native-device-info';

const getAppUniqueId = () => {
  const idfv = DeviceInfo.getUniqueId();
  console.log('应用唯一标识符(IDFV):', idfv);
  return idfv;
};

关键注意事项

  • Android 10+ 禁止普通应用获取 IMEI,不要尝试绕过系统限制,避免应用被拒或违规
  • 所有标识符的使用必须遵守用户隐私政策,尤其是 IDFA 需要获得用户明确同意
  • 跨平台开发时,需根据系统分支处理不同的标识符逻辑

内容的提问来源于stack exchange,提问作者Aniket Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:52:53