Buscar..


Crea tu módulo nativo (IOS)

Introducción

de http://facebook.github.io/react-native/docs/native-modules-ios.html

A veces, una aplicación necesita acceso a la API de la plataforma, y ​​React Native todavía no tiene un módulo correspondiente. Tal vez desee reutilizar algún código existente de Objective-C, Swift o C ++ sin tener que volverlo a implementar en JavaScript, o escribir algún código de alto rendimiento y multiproceso, como para el procesamiento de imágenes, una base de datos o cualquier número de extensiones avanzadas.

Un módulo nativo es simplemente una clase Objective-C que implementa el protocolo RCTBridgeModule .


Ejemplo

En su proyecto Xcode cree un nuevo archivo y seleccione Cocoa Touch Class , en el asistente de creación elija un nombre para su clase ( por ejemplo, NativeModule ), conviértalo en una subclase de : NSObject y elija Objective-C para el idioma.

Esto creará dos archivos NativeModuleEx.h y NativeModuleEx.m

Deberá importar RCTBridgeModule.h a su archivo NativeModuleEx.h siguiente manera:

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

@interface NativeModuleEx : NSObject <RCTBridgeModule>

@end

En su NativeModuleEx.m agregue el siguiente código:

#import "NativeModuleEx.h"

@implementation NativeModuleEx

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(testModule:(NSString *)string )
{
  NSLog(@"The string '%@' comes from JavaScript! ", string);
}

@end

RCT_EXPORT_MODULE() hará que su módulo sea accesible en JavaScript, puede pasarle un argumento opcional para especificar su nombre. Si no se proporciona ningún nombre, coincidirá con el nombre de clase de Objective-C.

RCT_EXPORT_METHOD() expondrá su método a JavaScript, solo los métodos que exporte utilizando esta macro serán accesibles en JavaScript.

Finalmente, en tu JavaScript puedes llamar a tu método como sigue:

import { NativeModules } from 'react-native';

var NativeModuleEx = NativeModules.NativeModuleEx;

NativeModuleEx.testModule('Some String !');


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow