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