首页 > 解决方案 > 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

错误截图

标签: xcodereact-nativesharereact-native-iosshare-extension

解决方案


您已为依赖项切换到 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


推荐阅读