'FIRAppNotConfigured', причина: 'Не удалось получить экземпляр базы данных Firebase по умолчанию. Необходимо вызвать `[FIRApp configure]` (`FirebaseApp.configure ()` в Swift) - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть проекты разработки и производства Firebase, и я управляю с помощью метода ниже,

В моем AppDelegate didFinishLaunchingWithOptions,

// Configure with manual options.
    let secondaryOptions = FirebaseOptions(googleAppID: "1:82121212:ios:212121212121212", gcmSenderID: "872909116998")
    secondaryOptions.bundleID = "com.testApp.test"
    secondaryOptions.apiKey = "AIzasskjkkjhkdhksadhsadaskdhks"
    secondaryOptions.clientID = "82121212-asdsdasdasdasdasdadsdsd.apps.googleusercontent.com"
    secondaryOptions.databaseURL = "https://test-myApp.firebaseio.com"
    secondaryOptions.storageBucket = "test-myApp.appspot.com"

    // Configure an alternative FIRApp.
    FirebaseApp.configure(name: "secondary", options: secondaryOptions)
    guard let secondary = FirebaseApp.app(name: "secondary")
        else { assert(false, "Could not retrieve secondary app") }
    let secondaryDb = Database.database(app: secondary)

и в моем другом контроллере представления при получении сообщений изВ базе данных firebase мое приложение аварийно завершает работу с "*** Завершающим приложением из-за неперехваченного исключения" FIRAppNotConfigured ", причина:" Не удалось получить экземпляр базы данных Firebase по умолчанию. Необходимо вызвать [FIRApp configure] (FirebaseApp.configure() в Swift) перед использованием базы данных Firebase. ""

my ChatViewController

class ChatViewController : UIViewController {

var ref : DatabaseReference!
override func viewDidLoad() {
    super.viewDidLoad()
    getChatMessages()
}

@objc func getChatMessages() {

    firebase = Database.database().reference(fromURL: url)
    Auth.auth().signIn(withCustomToken: firBaseAuthToken, completion: { (user, error) in
        if error != nil{
        }
        else
        {
            let userAuthData = user?.additionalUserInfo
            self.uid = (user?.user.uid)!.replacingOccurrences(of: ".", with: "")
            self.successFireBaseAuth(urlString: klUrl)
        }
    })

}

func successFireBaseAuth(urlString : String)
{
    ref = Database.database().reference(withPath: urlString)


    ref.observe(.value, with: { snapshot in
 })
}

1 Ответ

0 голосов
/ 09 ноября 2019

Судя по всему, вы обращаетесь к неправильному экземпляру приложения.

    guard let secondary = FirebaseApp.app(name: "secondary")
        else { assert(false, "Could not retrieve secondary app") }
    let secondaryDb = Database.database(app: secondary)

Ваш собственный код в AppDelegate, я предполагаю, что именно так вы должны получить правильный экземпляр базы данных.

но вы используете

Database.database()

при попытке получить сообщения.

Если вы хотите использовать общий экземпляр, используйте

FirebaseApp.configure(options: secondaryOptions)

при настройке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...