如何使用 React Native 从 UIDevice 获取设备名称?

Posted

技术标签:

【中文标题】如何使用 React Native 从 UIDevice 获取设备名称?【英文标题】:How can I get the device name from UIDevice with React Native? 【发布时间】:2015-08-11 04:43:38 【问题描述】:

我想通过 React Native 访问设备名称(来自 UIDevice)。有什么好办法吗?

【问题讨论】:

显示此链接:***.com/questions/1100127/… 我知道它可以从 UIDevice 访问,我想知道是否有 React Native 库或暴露 UIDevice 的方法。 NSLog(@"uniqueIdentifier: %@", [[UIDevice currentDevice] uniqueIdentifier]); NSLog(@"name: %@", [[UIDevice currentDevice] name]); NSLog(@"systemName: %@", [[UIDevice currentDevice] systemName]); NSLog(@"systemVersion: %@", [[UIDevice currentDevice] systemVersion]); NSLog(@"model: %@", [[UIDevice currentDevice] model]); NSLog(@"localizedModel: %@", [[UIDevice currentDevice]localizedModel]); 您的评论没有帮助,因为它忽略了问题的 React Native 部分。 这是一个提供设备信息的组件,您可以扩展它github.com/GertjanReynaert/react-native-device 或构建您自己的一个原生组件 【参考方案1】:

您需要创建一个Native Modules (ios)。步骤如下:

制作用于获取设备名称的原生 iOS 组件 在JS中使用

1.制作组件

//  Device.h
@import UIKit;
#import "RCTBridgeModule.h"

@interface Device : NSObject <RCTBridgeModule>

@end

//  Device.m
#import "Device.h"

@implementation Device
RCT_EXPORT_MODULE()

RCT_EXPORT_METHOD(deviceName:(RCTResponseSenderBlock)callback) 
  NSString *deviceName = [[UIDevice currentDevice] name];
  callback(@[deviceName]);

@end

2.在JS中使用

var Device = require('react-native').NativeModules.Device;
Device.deviceName( (name) => 
  console.log(name) 
);

【讨论】:

设备在 JS 中未定义,我收到此错误:Cannot read property 'deviceName' of undefined

以上是关于如何使用 React Native 从 UIDevice 获取设备名称?的主要内容,如果未能解决你的问题,请参考以下文章

react-native:ListView,如何从顶部推送新行

如何从存储中更新 React Native 功能组件状态

原生项目如何从零开始集成 React Native

如何使用React Native从图片后面移动一个 buttom?

React-native:如何从 Windows 构建 ios

如何从 fetch 中获取 JSON 数据(react-native)