1

我正在编写一个包含 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 本机模块吗?

4

0 回答 0