1. ホーム
  2. javascript

[解決済み] デバイス情報の取得 React-Native iOS

2022-03-10 02:21:27

質問

iPadからデバイス情報を取得しようとしています。私は、以下のものを使ってみました。 https://github.com/rebeccahughes/react-native-device-info しかし、私がポッドインストールした後、それは完全に私の解決策を壊す。少なくともデバイスの名前を取得できるようにしたいです。NPMモジュールを使用せずにこれを行うにはどうしたらよいでしょうか。あるいは、余分な依存関係を引き込む必要のない、動作するものをどなたかご存知でしょうか。

ありがとうございます。

解決方法は?

を使えば簡単にできます。 ネイティブモジュール ライブラリや依存関係は必要ありません。

同期バージョン

をJSに追加してください。

import { NativeModules} from "react-native"

const DeviceInfo = NativeModules.DeviceInfo;

const deviceName = DeviceInfo.getName();

をiOSで使用します。 RCTDeviceInfo.h

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface RCTDeviceInfo : NSObject<RCTBridgeModule>

@end

RCTDeviceInfo.m

#import "RCTDeviceInfo.h"

@implementation RCTDeviceInfo

RCT_EXPORT_MODULE(DeviceInfo);

RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getName) {
    return [[UIDevice currentDevice] name];
}

@end

非同期版

をJSに追加してください。

import { NativeModules} from "react-native"

const DeviceInfo = NativeModules.DeviceInfo;

DeviceInfo.getName().then(deviceName => {
  console.log("Current Device: "+deviceName);
}

をiOSで使用します。 RCTDeviceInfo.h

#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@interface RCTDeviceInfo : NSObject<RCTBridgeModule>

@end

RCTDeviceInfo.m

#import "RCTDeviceInfo.h"

@implementation RCTDeviceInfo

RCT_EXPORT_MODULE(DeviceInfo);

RCT_EXPORT_METHOD(getName
              getName_resolver:(RCTPromiseResolveBlock)resolve
              getName_rejecter:(RCTPromiseRejectBlock)reject) {
    resolve([[UIDevice currentDevice] name]);
}

@end