この記事を書いた理由
大体のアプリではクラッシュログとかを拾うためにFirebaseを組み込んでいるアプリが多いと思います。その場合は通常アプリ=Firebaseプロジェクトとなっていますが、例えば他のアプリとデータを共有したいとか別のFirebaseのプロジェクトにアクセスしたい場合が発生したので、共有のために貼っておきます。
ニーズが少ないのかあまり情報がなかったので、ちょっと苦労しました。と言っても数時間ではありますが。
やり方
今回は事情があってObjective-Cのコードですが、Swiftの人は置き換えてみてください。
流れとしては、別のプロジェクトを指定するためには、GoogleService-Info.plistをまるっと使います。「OtherApp.plist」とでもリネームしてプロジェクトに取り込んでください。
そして、「OtherApp.plist」へのファイルパスを指定して、FIRAppのインスタンスを作成します。
こんな感じです。
@property (nonatomic, retain) FIRAuth *auth;
-(void)setup {
// plistのパスを取得
NSString *filePath =[[NSBundle mainBundle] pathForResource:@"OtherApp-Info" ofType:@"plist"];
// plistを指定してFIROptionsを作成します
FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath];
// 読み込んだ設定に名前をつけます。
[FIRApp configureWithName:@"OtherApp" options:options];
// 指定した「OtherApp」を指定してFIRAppオブジェクトを作成します
FIRApp *app = [FIRApp appNamed:@"OtherApp" ];
// FIRAppオブジェクトを使ってFIRAuthオブジェクトを作成します
self.auth = [FIRAuth authWithApp:app];
}
例えば、こんな感じ。
-(void)doHogehoge {
[ self.auth signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// 認証後に必要な処理(Firestoreへのアクセスとか)をここで書く
}];
}
今回はデータを共有したかったのですが、Analyticsを一つにまとめたいとかにもいいかもしれません。