为 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'
行),因此库中的项目是重复的。
[重大更新]
有人发给我这个,为了用 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'
行),因此库中的项目是重复的。