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项目上的一些问题(此后已将其删除)之外,没有多少。
我遇到了这个问题,并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.framework,FBSDKShareKit.framework并且FBSDKLoginKit.framework不可用。
您还需要链接libFBSDKShareKit.a,libFBSDKCoreKit.a并libFBSDKLoginKit.a从GeneralXcode 的标签中进行链接。这些是仅有的三个可链接的核心/登录/共享内容。他们引用了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的Build TARGET => build terms =>“ Link Binary with library”列表中。如果没有,您可能需要libRCTFBSDK.a手动添加。我发现,一旦我运行了,react-native link并且出现libRCTFBSDK.a在该列表中,xCode便可以正确编译。
| 归档时间: |
|
| 查看次数: |
3674 次 |
| 最近记录: |