Как заставить response-native-fbsdk работать с CocoaPods
Я пытался получить react-native-fbsdk
работать с CocoaPods, так как я предпочитаю загружать SDK Facebook как часть pod install
процесс, но мне не повезло. Я знаю, что могу react-native link
библиотеку npm и вручную загрузите и добавьте необходимые фреймворки, но это кажется довольно глупым, когда в моем распоряжении совершенно хороший менеджер пакетов.
Судя по документации, все должно быть достаточно просто - просто добавьте необходимые 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
модуль Я получаю сообщения об ошибках, связанные с неопределенностью различных собственных модулей. Вот мой 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 показывает, что собственные модули 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
Так что да, я в полной растерянности. На мой взгляд, простого добавления стручков должно быть достаточно, чтобы включить фреймворки. Я проверил сети для любых дополнительных шагов, которые я, возможно, пропустил, но не так много, за исключением нескольких вопросов на react-native-fbsdk
проект, который с тех пор был удален.
2 ответа
Я столкнулся с этой проблемой и смог получить react-native-fbsdk
работать с установленным Facebook SDK, добавив в файл pod следующее:
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.framework
а также FBSDKLoginKit.framework
не доступны
Вам также нужно связать libFBSDKShareKit.a
, libFBSDKCoreKit.a
а также libFBSDKLoginKit.a
от General
вкладка в Xcode. Это единственные три вещи Core/Login/Share, доступные для ссылки. Они ссылаются на pods, и, глядя в каталог pods, вы видите, что нет .framework
файлы, просто .h
файлы, которые мы импортируем в AppDelegate.m Это (я думаю) дает react-native-fbsdk
все файлы в компонентах SDK, которые ему нужны.
Это работает для меня с моим Podfile, настроенным таким образом (не уверенный, что модуль болтов необходим):
pod 'Bolts'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
И я должен был сделать react-native link
чтобы убедиться, что libRCTFBSDK.a
находится в списке сборки TARGET => build phrases => "Связать двоичные файлы с библиотеками" в xcode. Если нет, то вам, вероятно, нужно добавить libRCTFBSDK.a
в ручную. Я обнаружил, что однажды я react-native link
и libRCTFBSDK.a
в этом списке, xCode затем скомпилирован правильно.
Если вы используете cocoapods, реагируйте нативно будет использовать cocoapods для связи библиотек ссылок. Я создал новый проект, затем установил и связал все пакеты перед запуском 'pod init' и 'pod install'. Может быть, эта ошибка от cocoapods при ссылке пакетов. Все пакеты нуждаются в "ответной ссылке", которую вы установили после запуска "pod install", она не работает. Я думаю, что мы можем распаковать cocoapod, прежде чем запустить реагировать родную ссылку.