Ricerca…


Crea il tuo modulo nativo (IOS)

introduzione

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

A volte un'applicazione ha bisogno di accedere all'API della piattaforma e React Native non ha ancora un modulo corrispondente. Forse vuoi riutilizzare qualche codice Objective-C, Swift o C ++ esistente senza doverlo reimplementare in JavaScript, o scrivere codice ad alte prestazioni, multi-thread come per l'elaborazione delle immagini, un database o un numero qualsiasi di estensioni avanzate.

Un modulo nativo è semplicemente una classe Objective-C che implementa il protocollo RCTBridgeModule .


Esempio

Nel tuo progetto Xcode crea un nuovo file e seleziona Cocoa Touch Class , nella procedura guidata di creazione scegli un nome per la tua classe ( es. NativeModule ), crea una sottoclasse di : NSObject e scegli Objective-C per la lingua.

Questo creerà due file NativeModuleEx.h e NativeModuleEx.m

Dovrai importare RCTBridgeModule.h nel tuo file NativeModuleEx.h come segue:

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

@interface NativeModuleEx : NSObject <RCTBridgeModule>

@end

Nel tuo NativeModuleEx.m aggiungi il seguente codice:

#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() renderà il tuo modulo accessibile in JavaScript, puoi passarlo come argomento opzionale per specificare il suo nome. Se non viene fornito alcun nome, corrisponderà al nome della classe Objective-C.

RCT_EXPORT_METHOD() esporrà il tuo metodo a JavaScript, solo i metodi che esporti utilizzando questa macro saranno accessibili in JavaScript.

Infine, nel tuo JavaScript puoi chiamare il tuo metodo come segue:

import { NativeModules } from 'react-native';

var NativeModuleEx = NativeModules.NativeModuleEx;

NativeModuleEx.testModule('Some String !');


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow