使react-native-fbsdk与CocoaPods一起使用

wjr*_*rrl 5 react-native fbsdk fbsdkloginkit react-native-fbsdk react-native-ios

我一直试图react-native-fbsdk与CocoaPods合作,因为我更喜欢将Facebook SDK作为该pod install过程的一部分,但是我运气并不好。我知道我可以react-native link使用npm库并手动下载并添加必要的框架,但是当我拥有一个非常好的软件包管理器时,这似乎很愚蠢。

文档来看,它应该相当简单-只需将必要的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
Run Code Online (Sandbox Code Playgroud)

但是,当我运行测试应用程序并尝试对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)
Run Code Online (Sandbox Code Playgroud)

但是,这引发错误undefined is not an object (evaluating 'LoginManager.logInWithReadPermissions'FBLoginManager.js。对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
Run Code Online (Sandbox Code Playgroud)

是的,我完全不知所措。在我看来,仅添加Pod应该足以包含框架。我已经在互联网上搜寻了我可能会错过的任何其他步骤,但是除了该react-native-fbsdk项目上的一些问题(此后已将其删除)之外,没有多少。

Oll*_*H-M 8

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

pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
Run Code Online (Sandbox Code Playgroud)

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

#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
Run Code Online (Sandbox Code Playgroud)

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

您还需要链接libFBSDKShareKit.alibFBSDKCoreKit.alibFBSDKLoginKit.aGeneralXcode 的标签中进行链接。这些是仅有的三个可链接的核心/登录/共享内容。他们引用了pod,然后在pods目录中看到没有.framework文件,只有.h文件,所以这些是我们导入AppDelegate.m的文件。该(我认为)提供react-native-fbsdk了所需的SDK组件中的所有文件。


T. *_*ong 6

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

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

而且,我必须react-native link确保libRCTFBSDK.a在xcode的Build TARGET => build terms =>“ Link Binary with library”列表中。如果没有,您可能需要libRCTFBSDK.a手动添加。我发现,一旦我运行了,react-native link并且出现libRCTFBSDK.a在该列表中,xCode便可以正确编译。

  • 我认为`react-native-link`应该是`react-native link` (2认同)