我正在编写一个包含 iOS 和 Android 原生模块的 NPM 库。重要的是我需要在启动之前将参数传递给本机模块。这适用于 Android:
package ...
import com.facebook.react.bridge.*
class MyNativeModule(reactContext: ReactApplicationContext, parameter: String) {
override fun getName(): String {
return "MyModule"
}
@ReactMethod
fun retrieveParameter(promise: Promise) {
promise.resolve(parameter)
}
}
当关闭自动链接库时,用户可以创建自己的 RN 包并使用以下设置参数:
class MyAppRNPackage(private val voizeCore: VoizeCore = VoizeCore.getInstance()) : ReactPackage {
override fun createNativeModules(reactApplicationContext: ReactApplicationContext): List<NativeModule> {
return arrayListOf<NativeModule>(
MyNativeModule(reactApplicationContext, "this is the parameter"),
)
}
override fun createViewManagers(reactApplicationContext: ReactApplicationContext): List<ViewManager<*, *>> {
return emptyList()
}
}
在 iOS 中,本机模块看起来像这样:
// MyNativeModule.m
#import "MyNativeModule.h"
@implementation MyNativeModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(retrieveParameter:(RCTPromiseResolveBlock)resolve rejecter: (RCTPromiseRejectBlock)reject)
{
resolve(???)
}
@end
但是如何为 iOS 模块设置参数呢?问题是在 iOS 中,无法手动注册原生模块。此外,只注册类而不注册类实例。
知道如何将参数从本机代码传递到 iOS 本机模块吗?