建立本機模組(IOS)
介紹
來自 http://facebook.github.io/react-native/docs/native-modules-ios.html
有時,應用程式需要訪問平臺 API,而 React Native 還沒有相應的模組。也許你想重用一些現有的 Objective-C,Swift 或 C++程式碼而不必在 JavaScript 中重新實現它,或者編寫一些高效能的多執行緒程式碼,例如用於影象處理,資料庫或任何數量的高階擴充套件。
Native Module 只是一個實現 RCTBridgeModule
協議的 Objective-C 類。
例
在你的 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 !');