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 ネイティブ モジュールにパラメータを渡す方法について何か考えはありますか?