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

这篇具有很好参考价值的文章主要介绍了ReactNative进阶(二十一)开源插件 react-native-device-info 获取设备信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

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

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

npm install --save react-native-device-info

二、Android 平台

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

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

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

import DeviceInfo from 'react-native-device-info';
DeviceInfo.getDeviceName()

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

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.

react-native-device-info,# React Native,react native,开源,react.js
2. 在xcode中加载内库。

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

react-native-device-info,# React Native,react native,开源,react.js

  1. 继续添加环境变量

    $(SRCROOT)/../react-native/React
    $(SRCROOT)/../../React 
    

    并修改recursive

react-native-device-info,# React Native,react native,开源,react.js

总结:作者曾经调用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权限获取到设备名称。文章来源地址https://www.toymoban.com/news/detail-732971.html

四、拓展阅读

  • 《react-native-device-info 插件文档》

到了这里,关于ReactNative进阶(二十一)开源插件 react-native-device-info 获取设备信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt优秀开源项目之二十一:遇见QSkinny,一个轻量级Qt UI库

    目录 一.QSkinny简介 二.工作原理 三.编译 QSkinny库基于Qt Graphic View和Qt/Quick中少量的核心类。它提供了一组轻量级控件,可以在C++或QML中使用这些控件。QSkinny默认是启用硬件加速的,非常适合嵌入式设备,目前已经应用于大量汽车GUI的代码实现中。正如预期的那样,它有良好的

    2024年01月23日
    浏览(47)
  • 【SQL开发实战技巧】系列(二十一):数据仓库中时间类型操作(进阶)识别重叠的日期范围,按指定10分钟时间间隔汇总数据

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2023年04月09日
    浏览(73)
  • ReactNative进阶(三十六):iPad横屏适配

    应用RN技术栈实现APP上线后,业务部门领导会上反馈未实现ipad横屏全屏展示,用户体验较差。由此,一场pad横屏全屏展示的APP调优工作由此开展。 时间紧任务重,技术实现上,考虑到存量功能代码改造工作量,RN层面对于横屏改造工作量较大,故RN层面整体实现横屏展示时间

    2024年01月25日
    浏览(28)
  • ReactNative 开源UI 套件

    1, NativeBase NativeBase 是一个广受欢迎的 UI 组件库,为 React Native 提供了数十个跨平台组件。在使用 NativeBase 时,你可以使用任意开箱即用的第三方原生库,而这个项目本身也拥有一个丰富的生态系统,从有用的入门套件到可定制的主题模板。 NativeBase 项目地址: https://github.c

    2024年04月17日
    浏览(15)
  • XCharts——Unity上最好用的免费开源图表插件!(二)进阶用法——结合代码的超强XCharts

    上一篇基本介绍:XCharts——Unity上最好用的免费开源图表插件!(一)基本介绍 本期介绍的是XCharts的 进阶 用法—— 结合代码的超强XCharts 只将重点!!! 目录 一、Legend(组别分类提示) 二、百分比类型显示 三、对应数据显示 四、特殊数据类型(下次一定) 不过这个 legend 是需要

    2024年02月06日
    浏览(35)
  • ReactNative进阶(三十四):ipa Archive 阶段报错error: Multiple commands produce问题修复及思考

    在应用RN开发跨平台APP阶段,从git中拉取项目,应用Jenkins进行组包时,发现最终生成的ipa安装包版本号始终与项目中设置的版本号不一致。 经过仔细排查,发现Jenkins在 Archive 编译、归档阶段失败,但是后续 Export 阶段生成了ipa包。 在xCode中打开应用,选中项目 target - Build p

    2024年02月12日
    浏览(29)
  • C++学习笔记(二十一)

    简介: 所有元素都会在插入时自动被排序 本质: set/multiset属于关联式容器,底层结构是用二叉树实现的 set和multiset的区别: set不允许容器中有重复的元素,multiset允许容器中有重复的元素 构造: setT st;        // 默认构造函数 set(const set st);        // 拷贝构造函数 赋值:

    2024年01月18日
    浏览(52)
  • 设计模式(二十一)策略

    定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。策略模式是一种对象行为型模式,又称为政策(Policy)模式。 包含以下三个角色: 1、Context(环境类): 环境类是使用算法的角色,它在解决某个问题(即实

    2024年02月01日
    浏览(26)
  • 第二十一章 Classes

    类定义并不是 ObjectScript 的正式组成部分。相反,可以在类定义的特定部分中使用 ObjectScript (特别是在方法定义中,可以在其中使用其他实现语言)。 每个 IRIS 类都有一个名称,该名称在定义它的命名空间中必须是唯一的。完整的类名是由一个或多个句点分隔的字符串,如

    2024年02月09日
    浏览(26)
  • 第二十一章

    计算机应用实现了多台计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据。编写网络应用程序前,首先必须明确所要使用的网络协议。TCP/IP协议是网络应用程序的

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包