Поиск…


Создайте свой собственный модуль (IOS)

Вступление

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

Иногда для приложения требуется доступ к API платформы, а у React Native еще нет соответствующего модуля. Возможно, вы хотите повторно использовать какой-то существующий код Objective-C, Swift или C ++ без необходимости переопределять его в JavaScript или написать некоторый высокопроизводительный многопоточный код, например, для обработки изображений, базы данных или любого количества расширенных расширений.

Нативный модуль - это просто класс Objective-C, который реализует протокол RCTBridgeModule .


пример

В проекте Xcode создайте новый файл и выберите Cocoa Touch Class , в мастере создания выберите имя для своего класса ( например, NativeModule ), сделайте его подклассом : NSObject и выберите Objective-C для языка.

Это создаст два файла NativeModuleEx.h и NativeModuleEx.m

Вам нужно будет импортировать RCTBridgeModule.h в файл NativeModuleEx.h как следует из:

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

@interface NativeModuleEx : NSObject <RCTBridgeModule>

@end

В NativeModuleEx.m добавьте следующий код:

#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() сделает ваш модуль доступным в JavaScript, вы можете передать ему необязательный аргумент, чтобы указать его имя. Если имя не указано, оно будет соответствовать имени класса Objective-C.

RCT_EXPORT_METHOD() предоставит ваш метод JavaScript, только методы, которые вы экспортируете с помощью этого макроса, будут доступны в JavaScript.

Наконец, в вашем JavaScript вы можете вызвать свой метод следующим образом:

import { NativeModules } from 'react-native';

var NativeModuleEx = NativeModules.NativeModuleEx;

NativeModuleEx.testModule('Some String !');


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow