iOS拡張機能-致命的な例外:com.firebase.coreデフォルトのアプリはすでに構成されています。
ViewDidLoad()メソッドでFir.configure()を実行すると、一部のイベントがパスしてFirebaseに到達します。
誰かが私がこれを理解するのを手伝ってもらえますか..グーグルは十分に友好的ではありません。
PS:はい、FirebaseConsoleで2つ目の.plistと2つ目のアプリを作成しました。 PPS:はい各GoogleServicesplistに正しいターゲットを選択しました
私は解決策を探しています。
あなたがまだ解決策を探しているかどうかはわかりませんが、拡張機能付きのFirebaseを使用して同じ問題が発生しました。
私はこれをすることになった:
if(FIRApp.defaultApp() == nil){
FIRApp.configure()
}
これにより、クラッシュが発生しないようにアプリが既に構成されているかどうかが確認されます。
同じ問題が発生し、アプリケーションの2か所で変更を加えることで解決しました(構文でSwiftバージョン)を確認してください)。
AppDelegate.Swiftで、次のメソッドをオーバーライドします。
init()をオーバーライドする{FirebaseApp.configure()}
ViewController.SwiftのviewDidLoad()メソッドで、次のコードを記述します。
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
答えは例外です。アプリを2回構成しています。これを修正するためのいくつかのオプションがあります。
1)アプリデリゲートでアプリを1回構成します。
2)構成と構成解除を一致させます。 FIRAppには、構成を解除できるメソッドがあります(実際の名前は私をエスケープします)。
この問題は、今日の拡張コードでも発生しました。 Firebaseインスタンスがすでに構成されているかどうかを追加で確認して、解決しました。
// define in your constants or somewhere
NSString* const UNIQUE_FIREBASE_INSTANCE_IDENTIFIER_WIDGET = @"Widget_FirebaseAppInstance";
if([FIRApp appNamed:UNIQUE_FIREBASE_INSTANCE_IDENTIFIER_WIDGET] == nil) // there should be only one app instance!
{
NSString *resourceName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"FirebaseResource"];
NSString *filePath = [[NSBundle mainBundle] pathForResource:resourceName ofType:@"plist"];
FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath];
[FIRApp configureWithName:UNIQUE_FIREBASE_INSTANCE_IDENTIFIER_WIDGET options:options];
}
メインアプリでは、別の一意の名前も使用する必要があります。したがって、複数のインスタンスを持つことができますが、すべてのインスタンスは1回だけ構成されます。