xcode - iOS 共享扩展不适用于 react-native 0.61.5
问题描述
我正在尝试AppRegistry.registerComponent
在共享扩展(使用 XCode 添加)中使用已注册的 ( ) react-native 模块。在早期版本的 react-native 中,我们可以手动链接必要的库Build Phases > Link Binaries with Libraries
并让它运行起来。但从 v0.60 开始,这不再可能。
此问题与此问题类似,但在较旧版本的 react-native 上,其解决方案不适用于最新版本。
此GitHub 问题中的更多详细信息
index.share.js
import {AppRegistry} from 'react-native';
import ShareExtension from './ShareExtension';
AppRegistry.registerComponent('ShareExtension', () => ShareExtension);
ShareVIewController.m > 加载视图
- (void)loadView {
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"ShareExtension"
initialProperties:nil];
self.view = rootView;
}
这是一个包含所有这些设置的 repo 以重现此问题:GitHub Repo
解决方案
您已为依赖项切换到 cocoapods。检查您手动链接的 ShareExtension 包后,它正在尝试引用您列出的依赖项
#import <React/RCTBridge.h>
#import <React/RCTRootView.h>
但这些实际上位于您的开发 pods 文件夹中,基本上在不同的范围内。
有很多方法可以解决这个问题。
我发现解决这个问题的最简单的方法是为它制作自己的小仓库,并像任何其他依赖项一样调用它。
你可以为它创建一个 git repo。我模仿我的https://github.com/react-native-community/react-native-push-notification-ios
您还可以查看以下内容以了解如何调用本地 cocoapods 目录: Podfile:本地 pod 相对于 Projectpath 的路径可能吗?
只需制作自己的 podspec 来引用 ShareExtension 中的本地文件,这些文件可能如下所示:
require "json"
package = JSON.parse(File.read(File.join(File.dirname(__FILE__), "package.json")))
Pod::Spec.new do |s|
# NPM package specification
s.name = 'Share Extension'
s.version = package['version']
s.summary = package['description']
s.description = package['description']
s.license = package['license']
s.author = package['author']
s.homepage = package['homepage']
s.source = { :git => "https://github.com/react-native-community/react-native-share-extension", :tag => "v#{s.version}" }
s.source_files = "ios/*.{h,m}"
s.platform = :ios, "9.0"
s.dependency "React"
end
推荐阅读
- python - 如何在调制文件中传递变量?
- node.js - MongoDB:使用嵌套的 $group 聚合
- ruby-on-rails - 在 Rails 5.2.1 中安装 Webpacker 后,立即出现“无法修改冻结数组”错误
- angular - Promise 和 Observables 使用 async-await 模式上传多个文件——Ionic 3,Firebase
- python - 在 PyTorch 中使用 GD 查找全局最小值
- html - svg文本上的颜色属性不起作用
- reactjs - 如何在 React Native 中的道具更改(通过 redux)时启动动画?
- c# - 如何在 ASP.Net MVC 应用程序中使用、读取和解压缩第三方 API 响应
- haskell - 不是类型构造函数的类型级函数示例
- visual-studio - Xamarin android .axml 文件加载错误:该项目不支持预览