为 iOS React-Native 项目设置 Fbsdk 框架

Setting Fbsdk frameworks for an iOS React-Native project

[重大更新]
有人发给我这个,为了用 React Native 安装 fbsdk 更容易阅读:https://developers.facebook.com/docs/react-native/getting-started-ios
但是,问题还是一样:

Use of undeclared identifier 'UIUserInterfaceIdiomTV'

我想这是 CocoaPods 提取的内容的错误,因为 我能够通过简单地删除相同的 UIUserInterfaceIdiomTV 案例来使 sample example 工作(它曾经在开关中)。

但是,按照指南中的每一步操作并最终删除 UIUserInterfaceIdiomTV,我在自己的项目中遇到了新的编译问题:
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_FBSDKAppEvents", referenced from: objc-class-ref in AppDelegate.o "_OBJC_CLASS_$_FBSDKApplicationDelegate", referenced from: objc-class-ref in AppDelegate.o "_OBJC_CLASS_$_RCTRootView", referenced from: objc-class-ref in AppDelegate.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果有人能帮忙...
感谢您的帮助!

我终于让 fbsdk 可以工作了 (24/04/2016)。总结不同的步骤,以防遇到相同的问题:

  • 如果在命令pod install后遇到The 'YourApp [Debug]' target overrides the 'OTHER_LDFLAGS' build setting...警告,则在主项目构建设置中添加$(inherited)而不是 Pods
  • 目前无法识别 UIUserInterfaceIdiomTV,原因不明,因此在 AppDelegate.m 中,如果出现错误,请从 switch
  • 中浏览一下大小写
  • info.plist 必须包含 sdk 安装指南中(尚未)提及的几行。以下是您应该添加的内容的完整列表: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb{your-app-id}</string> </array> </dict> </array> <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> <key>FacebookAppID</key> <string>{your-app-id}</string> <key>FacebookDisplayName</key> <string>{your-app-name}</string>

不要忘记将 {your-app-id} 替换为...您的应用程序 ID,并将 {your-app-name} 替换为您的应用程序名称。 祝大家好运!

本文直接回答了您的问题... https://colinramsay.co.uk/2016/04/29/go-serverless.html

我会 copy/paste 相关细节,因为我知道 link 在 SOF 上不是一个合适的答案。

让我们通过 npm 安装 Facebook React Native SDK,这将免费为我们提供一个漂亮的登录按钮:

npm install --save react-native-fbsdkcore react-native-fbsdklogin

我们需要安装一些本机代码才能完成这项工作,所以让我们使用 CocoaPods 来完成。首先我们创建一个 Podfile:

cd ios
pod init

编辑刚刚在 FacebookAwsReactNative/ios/Podfile 创建的文件并添加以下内容:

source 'https://github.com/CocoaPods/Specs.git'
pod 'React', :subspecs => ['Core', 'RCTImage', 'RCTNetwork', 'RCTText', 'RCTWebSocket'], :path => '../node_modules/react-native'
pod 'react-native-fbsdkcore', :path => '../node_modules/react-native-fbsdkcore'
pod 'react-native-fbsdklogin', :path => '../node_modules/react-native-fbsdklogin'
pod 'react-native-fbsdkshare', :path => '../node_modules/react-native-fbsdkshare'

根据 Facebook documentation,您可能需要在此处执行一些其他步骤。以防万一,去阅读该部分。让我们安装 pods,然后我们将不得不在 Xcode 中花点时间。

pod install
open FacebookAwsReactNative.xcworkspace

请注意,我们现在使用 xcworkspace 文件而不是 xcodeproj 文件;这是 CocoaPods 执行其操作所必需的。

展开 FacebookAwsReactNative > Libraries 文件夹和 select 中的所有项目并删除对它们的引用。这是因为我们选择将 CocoaPods 用于 React Native(请参阅我们添加到 Podfile 的 pod 'React' 行),因此库中的项目是重复的。