让 react-native-fbsdk 与 CocoaPod 一起工作



我一直在努力让react-native-fbsdk使用CocoaPods,因为我更喜欢获取Facebook SDK作为pod install过程的一部分,但我没有太多的运气。我知道我可以react-native linknpm 库并手动下载和添加必要的框架,但是当我有一个非常好的包管理器可供我使用时,这似乎相当愚蠢。

从文档来看,它应该相当简单 - 只需将必要的 pod 添加到Podfile,对吧?但无论我尝试什么,本机 FBSDK 模块似乎从未包含在内。我尝试了一大堆不同的Podfile,有些是use_framework!pod 'Bolts',有些只有pod 'FBSDKCoreKit'。这是我目前使用的那个:

target 'FacebookPods' do
pod 'FBSDKCoreKit'
pod 'FBSDKShareKit'
pod 'FBSDKLoginKit'
target 'FacebookPodsTests' do
inherit! :search_paths
end
end

但是当我运行我的测试应用程序并尝试对react-native-fbsdk模块执行任何操作时,我收到错误,抱怨各种本机模块未定义。这是我index.ios.js文件,尝试访问LoginManager

import React, {Component} from "react"
import {AppRegistry, Text} from "react-native"
import {LoginManager} from "react-native-fbsdk"
export default class FacebookPods extends Component {
componentWillMount() {
LoginManager.logInWithReadPermissions(["email"])
.then(() => console.log("Success!"))
.catch((err) => console.log("Failure!", err))
}
render() {
return <Text>Hello World</Text>
}
}
AppRegistry.registerComponent("FacebookPods", () => FacebookPods)

但这会在FBLoginManager.js中抛出错误undefined is not an object (evaluating 'LoginManager.logInWithReadPermissions'.对 NativeModules 的进一步检查显示,根本没有包含任何本机 FBSDK 模块。我还在启动时收到以下警告:

2017-07-13 19:50:19.006 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBLikeView" does not exist
2017-07-13 19:50:19.007 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBLoginButton" does not exist
2017-07-13 19:50:19.008 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBSendButton" does not exist
2017-07-13 19:50:19.009 [warn][tid:com.facebook.react.JavaScript] Warning: Native component for "RCTFBShareButton" does not exist

所以是的,我完全不知所措。在我看来,简单地添加 pod 应该足以包含框架。我已经在互联网上搜索了我可能错过的任何其他步骤,但除了react-native-fbsdk项目中的一些问题之外,并没有太多

,这些问题从那时起就被删除了。

我遇到了这个问题,并通过将以下内容添加到我的pod文件中,设法使用已安装的Facebook SDKreact-native-fbsdk

pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'

并在 AppDelegate.m 中导入以下内容:

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

请注意,这些导入与react-native-fbsdk自述文件中的建议不同。这是因为FBSDKCorekit.frameworkFBSDKShareKit.frameworkFBSDKLoginKit.framework不可用。

您还需要从 Xcode 中的General选项卡链接libFBSDKShareKit.alibFBSDKCoreKit.alibFBSDKLoginKit.a。这些是仅有的三个核心/登录/共享内容可供链接。它们引用 pod,在 pods 目录中查找,您会看到没有.framework文件,只有.h文件,因此这些是我们导入到 AppDelegate.m 中的文件。这(我认为)提供了react-native-fbsdk所需的SDK组件中的所有文件。

它以这种方式设置我的 Podfile 对我有用(不确定是否需要 Bolts 框架 pod):

pod 'Bolts' pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'

我必须react-native link确保libRCTFBSDK.a在 xcode 的构建目标 => 构建短语 =>"链接二进制文件与库"列表中。 如果没有,您可能需要手动添加libRCTFBSDK.a。 我发现一旦我运行了react-native link并且libRCTFBSDK.a在该列表中,xCode 就会正确编译。

如果你使用 cocoapods,react native 将使用 cocoapods 来链接链接库。我创建了一个新项目,然后在运行"pod init"和"pod install"之前安装并链接所有软件包。也许这个错误来自 cocoapods 时链接包。所有软件包都需要您在运行"pod install"后安装的"反应本机链接",它不起作用。我认为我们可以在运行 react 本机链接之前对 cocoapod 进行解密。

相关内容

  • 没有找到相关文章

最新更新