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

标签 react-native react-native-ios fbsdk react-native-fbsdk fbsdkloginkit

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

判断the documentation它应该相当简单——只需将必要的 pod 添加到 Podfile , 对?但无论我尝试什么,似乎都没有包含原生 FBSDK 模块。我尝试了很多不同的Podfile s,有些带有 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 做任何事情时模块我收到错误,提示各种 native 模块未定义。这是我的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)

但这会引发错误 undefined is not an object (evaluating 'LoginManager.logInWithReadPermissions'FBLoginManager.js .对 NativeModules 的进一步检查表明,根本没有包含 native 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 上的一些问题。此后已被删除的项目。

最佳答案

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

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

并在 AppDelegate.m 中导入以下内容:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>

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

您还需要链接libFBSDKShareKit.a , libFBSDKCoreKit.alibFBSDKLoginKit.a来自 General Xcode 中的选项卡。这是仅有的三个可链接的核心/登录/共享事物。它们指的是 pod,查看 pods 目录你会发现没有 .framework文件,只是 .h文件,所以这些是我们导入 AppDelegate.m 的文件。那(我认为)给了react-native-fbsdk它需要的 SDK 组件中的所有文件。

关于react-native - 让 react-native-fbsdk 与 CocoaPods 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45087919/

相关文章:

ios - Xcode 11.1 错误 : Multiple commands produce

javascript - JSON:在文本元素中显示第三级内容(ReactJS/Native)

ios - 如何在 react 原生 ios 应用程序中更新应用程序版本?

javascript - 如何在react-native中控制打开/关闭模式

android - 'LikeView' 没有原生类型 'RCTFBLikeView.onLayout' 的 propType 'boolean' 如果你没有改变这个

react-native - 错误: use of undeclared identifier 'FBSDKApplicationDelegate'

node.js - 无法从 "firebase"解析 "src\containers\Login.js"

react-native - 获取完成后如何在 native react 中导航到另一个屏幕

javascript - 未捕获的 TypeError : Cannot set property 'onclick' of null , 无法打开我的弹出窗口

ios - react-native-video onLoad onProgress 不工作 IOS