CocoaPodsを使わずにReact Native のプロジェクトをFirebaseと連携する
やりたいこと
ReactNativeで構築したアプリをFirebaseと連携したい!
最終的にはDynamicLinkを使いたいというのが理由です。
(DynamicLink自体は別記事に書こうと思う)
そして、今回はCocoaPodsを使わないという縛りがあります。←これ重要
普通にググるとpod install
をしろと死ぬほど出てきます。
しかし!!
CocoaPods入れると余計な依存関係が増えるという大きなデメリットがあります。
ただでさえ、yarn とかnpmとかで管理しているパッケージの依存関係が少しでもおかしいとReactNative はビルドですぐ死にますが、CocoaPods入れた日にはもうリリースビルドなんて30年ぐらいかかります。
そこで、今回はCocoaPodsを使わないでfirebaseと連携します。
(Firebaseの公式では推奨はpod install
しろてなってるんだけどね)
下準備
react-native init
からのreact-native run-ios
でビルド成功することを確認したプロジェクトを用意しました。
↓何もない人はこの記事の手順で作ってみてください。これの続きです
https://qiita.com/Umibows/items/175a066c1259ff4b0158
下のような画面が出ています。
連携手順
http://rennnosukesann.hatenablog.com/entry/2018/05/29/235733
↑基本的にはこのサイトの手順でOK!
ただし、なんども言いますがCocoaPodsは使いません!ので
firebaseコンソールで設定していく中でのこの「firebase SDKの追加」は手動でやります。
https://firebase.google.com/docs/ios/setup
1. まず↑からSDKをzipでダウンロードして、展開
2. 展開した「Firebase」というフォルダを下のxcodeのサイドバーのプロジェクトファイルの直下にドラッグ&ドロップする
3. 下のような画面が出てくるのでチェックをこの画像のようにつけてFinishする
(自分は追加したframeworkのファイル群をgitにあげたかったのでこのようにしたが、好みで、create folder referenceにチェックしてもいいと思う。FaceBookSDKとかだとサイズがでかすぎてreferenceの追加になると思う。ただし、search pathを整備する必要が生じる)
この状態だとlinkがうまくいっていなくてビルドは失敗します。
4. プロジェクトファイルのGeneral→linked frameworks and libraries →+をクリック→Add Other → Firebaseフォルダの中の必要なライブラリを全選択してopen
5. AppDelegate.m
に#import "Firebase.h"
追記(firebaseコンソールでは@import Firebase;
をかけと言われているが、エラー吐かれた)
6. AppDelegate.m
のdidFinishLaunchingWithOptionsの中に[FIRApp configure];
追記(これはコンソールの指示通りでOK)
#import "AppDelegate.h"
#import "Firebase.h" <--------追記
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
[FIRApp configure]; <--------追記
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"AwesomeApp"
initialProperties:nil
launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
@end
ここまでちゃんとできて入ればコンソールの最後の設定で下のように連携完了するはず!!
ちなみに、手動で連携しているので、ビルドしようとするとLinking library: Mach-O linker error
が出るかもしれない。
「〇〇 from reference」みたいなエラーメッセージなら、General →Linked Frameworks and Librariesから必要なライブラリを追加すれば治る。
下の場合、StoreKit.frameworkとlibsqlite3.0.tbd, WebKit.framework入れたら治った
参考にしたページ
https://firebase.google.com/docs/ios/setup
http://rennnosukesann.hatenablog.com/entry/2018/05/29/235733
http://utwang.io/2016/07/14/firebase-manual-install/
https://joyplot.com/documents/2016/09/18/xcode-link-error-framework/
http://www.mokacoding.com/blog/setting-up-firebase-without-cocoapods/
Author And Source
この問題について(CocoaPodsを使わずにReact Native のプロジェクトをFirebaseと連携する), 我々は、より多くの情報をここで見つけました https://qiita.com/Umibows/items/11c374c9025b57f96472著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .