В последнее время мне нужна была простая функция для взаимодействия с нативным кодом, но я решил не создавать пакет, потому что он не будет очень полезным. Я создал файлы java точно так же, как если бы они были из плагина, и зарегистрировал их в MainApplication.
Я использую машинопись, поэтому сейчас я борюсь с взаимодействием от rn до java. Я попытался с файлом js следующим образом:
import NativeModules from 'react-native';
const AndroidService = NativeModules;
export default { AndroidService }
Но затем я должен определить типы (сообщение из кода):
Property 'play' does not exist on type '{ AndroidService: typeof import("/home/karol/Git/TailosiveHub-react/node_modules/@types/react-native/index"); }'.
Я попытался создать index.d.ts
файл в root проекта, но это не работает.
Как определить типы для собственного модуля в машинописи?
MainApplication:
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
packages.add(new AndroidServicePackage());
// packages.add(new MainReactPackage());
return packages;
}
AndroidServicePackage:
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(new AndroidServiceModule(reactContext));
}
AndroidServiceModule:
@Override
public String getName() {
return "AndroidService";
}
Метод:
@ReactMethod
public void play(String streamingURL/*, ReadableMap options*/) {
doSomething();
}