Create a custom React Native module that exports Constants (with Swift)

In this post, we will create a simple React Native module using Swift. The module will return information about the current device and expose it to JavaScript.

First, we create our Swift class, RNDevice.swift.
This class will is responsible for returning information that describes the current device. This information is obtain using the UIDevice class.

[code language=”Java”]
import UIKit

@objc(RNDevice)
class RNDevice: NSObject {

@objc func constantsToExport() -> NSObject {
let currentDevice = UIDevice.currentDevice()
return [
"name": currentDevice.name,
"systemName": currentDevice.systemName,
"systemVersion": currentDevice.systemVersion,
"localizedModel":currentDevice.localizedModel,
"model": currentDevice.model
]
}
}
[/code]

Next, we create the bridge to React Native and externalize the RNDevice class (above), so that it can be called by name from JavaScript

[code language=”C”]
#import "RCTBridgeModule.h"

@interface RCT_EXTERN_MODULE(RNDevice, NSObject)

@end
[/code]

Finally, to obtain the device properties from JavaScript, we can invoke the new RNDevice module using the following code:

[code language=”JavaScript”]
const { RNDevice } = require(‘NativeModules’);
console.log(RNDevice);
[/code]

You may also like...