ReactNative进阶(二十一)开源插件 react-native-device-info 获取设备信息

文章目录

一、前言

项目开发过程中,需要获取设备信息,例如获取设备名称。可通过使用开源的第三方组件react-native-device-info,该组件适用于iOSAndroid双平台。

ReactNative项目中可通过npm命令下载 react-native-device-info 组件依赖包:

shell 复制代码
npm install --save react-native-device-info

二、Android 平台

android需要在AndroidManifest.xml配置文件添加android.permission.BLUETOOTH权限

xml 复制代码
<uses-permission android:name="android.permission.BLUETOOTH"/>

具体应用示例如下,有关更多获取设备属性方法详参 react-native-device-info

javascript 复制代码
import DeviceInfo from 'react-native-device-info';
DeviceInfo.getDeviceName()

注⚠️:官方文档指出,在调用getDeviceName()方法获取设备名称时,当版本号低于v3时,android需要在AndroidManifest.xml配置文件添加android.permission.BLUETOOTH权限,若版本号不低于v3,android.permission.BLUETOOTH权限可不添加。

javascript 复制代码
DeviceInfo.getDeviceName().then((deviceName) => {
  // iOS: "Becca's iPhone 6"
  // Android: ?
  // Windows: ?
});

This used to require the android.permission.BLUETOOTH but the new implementation in v3 does not need it. You may remove that from your AndroidManifest.xml if you had it for this API. iOS 16 and greater require entitlements to access user-defined device name, otherwise a generic value is returned (ie. 'iPad', 'iPhone')

三、iOS 平台

其中,针对iOS系统为16或者更高版本,需要设置允许获取用户自定义设备名称权限,否则将获取iOS移动设备通用名称,例如 'iPad', 'iPhone'。

  1. 首先在xcode中进行初始化。

    打开xcode,找到自己的项目->Libraries文件夹,选择Add Files to '项目名',然后找到当前项目目录/node_modules/react-native-device-info文件夹,找到'RNDeviceInfo.xcodeproj'文件,然后点击Add.

  1. 在xcode中加载内库。

找到项目名字 ----> Build Phases ---> Link Binary With Libraries , 点击'+'按钮,添加'libRNDeviceInfo.a'库。

  1. 继续添加环境变量

    javascript 复制代码
    $(SRCROOT)/../react-native/React
    $(SRCROOT)/../../React 

    并修改recursive

总结 :作者曾经调用DeviceInfo.getDeviceName()方法获取设备名称,但获取值一直为undefined,曾怀疑由于手机隐私设置导致无法获取,但是其他属性却可以获取,故可排除手机隐私设置所致。经过研读插件文档,才发现自己所引用的react-native-device-info插件版本号为2.3.2 ,需要在AndroidManifest.xml配置文件添加android.permission.BLUETOOTH权限,而通过检查AndroidManifest.xml配置文件,发现缺少添加android.permission.BLUETOOTH权限,这才导致获取值为undefined,故通过在AndroidManifest.xml配置文件添加android.permission.BLUETOOTH权限获取到设备名称。

四、拓展阅读

相关推荐
AscendKing7 小时前
一款针对IT团队开发的简单好用的文档管理系统
开源·好好学电脑·hhxdn.com
什么时候星期五9 小时前
antd 4.x Tabs 点击阻止冒泡
css·react.js
8***a8159 小时前
IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤
物联网·spring cloud·开源
孟陬11 小时前
我的 AI 工作流 —— project_rules.md 代码规范篇,让 AI 自省自动跑起来
react.js·node.js·bun
Java陈序员11 小时前
精致简约!一款优雅的开源云盘系统!
mysql·docker·开源·go·云盘
小Lu的开源日常12 小时前
如何将 GitHub 仓库从个人账户转移到组织账户
git·开源·github
wordbaby13 小时前
揭秘 React Native 布局:Yoga 引擎与那些“反直觉”的 Flexbox
react native
霍格沃兹测试开发学社13 小时前
被裁后,我如何实现0到3份大厂Offer的逆袭?(内附面试真题)
人工智能·selenium·react.js·面试·职场和发展·单元测试·压力测试
J***793915 小时前
前端在移动端中的React Native Windows
前端·react native·react.js
b***629515 小时前
IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤
物联网·spring cloud·开源