#objective-c #react-native #cocoapods #react-native-ios
#objective-c #react-native #cocoapods #react-native-ios
Вопрос:
Я практикуюсь в создании моста React Native. До сих пор я могу передать строку из Objective-C в JavaScript, используя следующие коды:
TestModule.h
#import <React/RCTBridgeModule.h>
@interface TestModule : NSObject <RCTBridgeModule>
@end
TestModule.m
#import "TestModule.h"
@implementation TestModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(foo:(RCTResponseSenderBlock)callback)
{
NSString *testString = @"test";
callback(@[testString]);
}
@end
Затем в React Native:
import React, { useState, useEffect } from 'react';
import { SafeAreaView, Text, NativeModules } from 'react-native';
const { foo } = NativeModules.TestModule;
export default function App() {
const [text, setText] = useState('HELLO WORLD!');
useEffect(() => foo(setText), []);
return (
<SafeAreaView>
<Text>{text}</Text>
</SafeAreaView>
);
}
Это отлично работает в монолитном приложении, но я хочу экспортировать метод как стороннюю зависимость и переместить его в другую папку, а затем добавить test-bridge.podspec
файл.
test-bridge.podspec
package = JSON.parse(File.read('package.json'))
Pod::Spec.new do |spec|
spec.name = package['name']
spec.version = package['version']
spec.summary = package['description']
spec.license = package['license']
spec.homepage = package['homepage']
spec.author = { package['author']['name'] => package['author']['email'] }
spec.source = { git: package['repository']['url'] }
spec.source_files = '*.{h,m}'
end
package.json
{
"name": "test-bridge",
"version": "1.0.0",
"description": "Some Description",
"license": "MIT",
"homepage": "https://github.com/dcangulo/test-bridge",
"repository": {
"type": "git",
"url": "https://github.com/dcangulo/test-bridge.git"
},
"author": {
"name": "David Angulo",
"email": "hello@davidangulo.xyz",
"url": "https://www.davidangulo.xyz"
},
"main": "index.js"
}
Затем, чтобы установить его в мое приложение (созданное с помощью npx react-native init
), я запускаю следующее:
yarn add https://github.com/dcangulo/test-bridge
npx pod-install
Однако pod-install
не связывает пакет в приложении, и я получаю null is not an object
сообщение об ошибке, подразумевающее, что NativeModules.TestModule
это null
так.
Репозиторий: https://github.com/dcangulo/test-bridge
Чего не хватает моему коду для включения автоматической компоновки с использованием cocoapods?