2
votes

We are using firebase SDK without Cocopods, While integrating firebase phone authentication it we are getting below crash :-

Error:- 2017-09-18 19:30:46.123775+0530 NewFireBaseDummy[2174:475150] * Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded)' with name 'FUIPhoneEntryViewController'' * First throw call stack: (0x1901aefe0 0x18ec10538 0x1901aef28 0x1967e6600 0x1966472d4 0x19641146c 0x1962dfb68 0x1962dfa9c 0x1000f8174 0x1000f3a38 0x1000f39a4 0x1000f1140 0x1001066b8 0x10008bed4 0x10008b9c8 0x10008bb04 0x1000d0754 0x1000d0ad8 0x100c71a50 0x100c71a10 0x100c76b78 0x19015d0c8 0x19015ace4 0x19008ada4 0x191af4074 0x196345058 0x10008dcb0 0x18f09959c) libc++abi.dylib: terminating with uncaught exception of type NSException

import UIKit
import Firebase
import FirebaseAuthUI
import FirebasePhoneAuthUI

class ViewController: UIViewController, FUIAuthDelegate {

fileprivate(set) var auth:Auth?
fileprivate(set) var authUI: FUIAuth? //only set internally but get externally
fileprivate(set) var authStateListenerHandle: AuthStateDidChangeListenerHandle?

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.
    self.auth = Auth.auth()
    self.authUI = FUIAuth.defaultAuthUI()
    self.authUI?.delegate = self
    self.authUI?.providers = [FUIPhoneAuth(authUI: self.authUI!)]


    self.authStateListenerHandle = self.auth?.addStateDidChangeListener { (auth, user) in
        guard user != nil else {
            self.loginAction(sender: self)
            return
        }

    }


}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func loginAction(sender:AnyObject){
    //direct open the auth page
    let provider = self.authUI?.providers.first as! FUIPhoneAuth;
    provider.signIn(withPresenting: self);
}

func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) {
    guard let authError = error else { return }

    let errorCode = UInt((authError as NSError).code)

    switch errorCode {
    case FUIAuthErrorCode.userCancelledSignIn.rawValue:
        print("User cancelled sign-in");
        break

    default:
        let detailedError = (authError as NSError).userInfo[NSUnderlyingErrorKey] ?? authError
        print("Login error: \((detailedError as! NSError).localizedDescription)");
    }
}

}
1

1 Answers

0
votes

I'm not sure about your error but maybe you miss something very important for the PhoneAuth. Maybe you can try to figure it out in follow this tutorial from YouTube : https://www.youtube.com/watch?v=bujGsqBo4xk It describes step by step how to make the PhoneAuth using Firebase Hope it helps