码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ReactNative进阶(二十一)开源插件 react-native-device-info 获取设备信息


    文章目录

      • 一、前言
      • 二、Android 平台
      • 三、iOS 平台
      • 四、拓展阅读

    一、前言

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

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

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

    二、Android 平台

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

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

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

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

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

    DeviceInfo.getDeviceName().then((deviceName) => {
      // iOS: "Becca's iPhone 6"
      // Android: ?
      // Windows: ?
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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.

    在这里插入图片描述
    2. 在xcode中加载内库。

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

    在这里插入图片描述

    1. 继续添加环境变量

      $(SRCROOT)/../react-native/React
      $(SRCROOT)/../../React 
      
      • 1
      • 2

      并修改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权限获取到设备名称。

    四、拓展阅读

    • 《react-native-device-info 插件文档》
  • 相关阅读:
    笔记本电脑使用时需要一直插电吗?笔记本正确的充电方式
    金蝶云星空套打设计平台导出套打模板和导入套打模板
    PAT 1122 Hamiltonian Cycle
    【智慧排水】智慧排水监测系统助力城市抗洪排涝建设
    Vmware: network 相关
    Spring Boot 中单元测试框架 Mockito 的正确使用
    Set 数据构造函数
    含文档+PPT+源码等]精品基于PHP实现的好物优购商城|电商小程序[包运行成功]计算机毕业设计PHP毕业设计项目源码计算机PHP毕业设计微信小程序项目源码
    【Java】链表的中间结点
    React--组件的生命周期
  • 原文地址:https://blog.csdn.net/sunhuaqiang1/article/details/132831809
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号