Error al get el controller de vista remota con error: Error: domain = _UIViewServiceInterfaceErrorDomain, code = 2

Tengo un error realmente frustrante. Estoy 3 meses en el desarrollo de iOS. He estado iniciando session en Facebook y luego conectándome a Firebase. Lo implementé desde el principio. Funciona perfectamente, hoy en día me despierto para poner la aplicación en la tienda … y el inicio de session de Facebook no funciona.

Absolutamente nada ha cambiado en mi código para iniciar session en Facebook (estoy casi seguro, pero he comprobado todo!) Lo que sucede es que usted hará clic en el button de inicio de session de Facebook y no será nada más que blanco (donde normalmente habría un internet browser). El error que recibo es:

[ViewService] Failed to get remote view controller with error: Error: domain=_UIViewServiceInterfaceErrorDomain, code=2 

He cambiado absolutamente del código. Mi bundleID y appID son los mismos que en el desarrollador de Facebook.

No tengo absolutamente ninguna idea de lo que es y las pocas personas que tienen un problema similar no parecen tampoco. Me gustaría entenderlo, pero ser capaz de resolverlo y no ocurrir en el futuro sería realmente genial. Estoy codificando rápidamente pero no estoy usando swiftSDK como en los documentos de Facebook, en cambio estoy usando el FBSDKLoginButton.

También he probado esto en un simulador y no sucede. Solo sucede en mi teléfono.

Realmente no estoy seguro de qué es información útil, así que lo siento si incluyo algo que no sea relevante.

Estoy usando facebook sdk 4.20.2

Este es mi info.plist:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>en</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>CeleBreak</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb1253394891414659</string> </array> </dict> </array> <key>CFBundleVersion</key> <string>1</string> <key>FacebookAppID</key> <string>1253394891414659</string> <key>FacebookDisplayName</key> <string>CelebreakApp</string> <key>LSApplicationQueriesSchemes</key> <array> <string>fbauth2</string> </array> <key>LSRequiresIPhoneOS</key> <true/> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> <key>NSExceptionDomains</key> <dict/> </dict> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIRequinetworkingDeviceCapabilities</key> <array> <string>armv7</string> </array> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> </dict> </plist> 

Este es mi inicio de session VC:

 class LoginVC: UIViewController: FBSDKLoginButtonDelegate { @IBOutlet weak var loginButton: FBSDKLoginButton! public var originVC: UIViewController = TabBarController() override func viewDidLoad(){ phoneNumberTextField.delegate = self loginButton.delegate = self phoneNumberTextField.keyboardType = UIKeyboardType.numberPad } func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error?) { } func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { fatalError("Logging out in Login View shouldn't happen") } } 

Entonces, el button de inicio de session es solo un FBSDKLoginButton. Cuando miro a través de los documentos de Facebook, no explica hacerlo así, sino que lo explica con un SDK rápido, pero seguí una guía configurando Facebook de esta manera y no lo entendí realmente.

Solución: borrar datos e historial de la configuration de Safari en su teléfono.

Crédito: https://stackoverflow.com/a/44457044/7442549

Tuve el mismo problema al probar a background mi flujo de inicio de session: iniciar session / salir repetidamente, usar la aplicación nativa de FB en lugar de iniciar session en Safari, etc.

Creo que esta es una debilidad en las interacciones entre FB login / Safari.