在工作了一年多之后,Firebase UI Phone身份验证停止了工作,但在设备上似乎仍然有效。输入用户电话号码的屏幕会出现,但随后会像屏幕一样崩溃,应用程序变得完全没有响应。但是,在控制台中没有检测到崩溃。控制台以看似随机的顺序重复以下三条类似的消息:
更新选择器失败,错误为:Error domain=nscocoaerrordomain code=4099“到pid 0上名为com.apple.comcenter.coretlephony.xpc的服务的连接无效。”UserInfo={NSDebugDescription=与pid 0上名为com.apple.comcenter.coretlephony.xpc的服务的连接已无效。}
同步远程对象代理返回错误:Error domain=nscocoaerrordomain code=4099“到pid 0上名为com.apple.comcenter.coretlephony.xpc的服务的连接无效。”UserInfo={NSDebugDescription=与pid 0上名为com.apple.comcenter.coretlephony.xpc的服务的连接已无效。}
删除委托后更新选择器失败,原因为:Error domain=nscocoaerrordomain code=4099“与pid 0上名为com.apple.comcenter.coretlephony.xpc的服务的连接从此进程无效。”UserInfo={NSDebugDescription=与pid 0上名为com.apple.comcenter.coretlephony.xpc的服务的连接从此进程无效。}
最后,我在控制台中得到这样的消息:
找不到键盘iPhone-Altraite-NumberPad支持type 4的keyplane;使用25873_PROTACHIT_IPHONE-SIMPLE-PAD_DEFAULT
下面是调用Firebase UI的代码:
@objc func presentRegistration() {
guard let authUI = FUIAuth.defaultAuthUI() else { handleSignInError(); return }
let providers: [FUIAuthProvider] = [FUIPhoneAuth(authUI: authUI)]
authUI.delegate = self
authUI.providers = providers
guard let phoneProvider = authUI.providers.first as? FUIPhoneAuth else { handleSignInError(); return }
phoneProvider.signIn(withPresenting: self, phoneNumber: "")
}
使用此委托函数:
func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
if let _ = error {
present(message: "There was an error signing in. Please check that there is an active internet connection and that the number entered is correct. Then try again.")
} else {
self.loginUser()
}
}
我尝试更新我的Firebase播客文件,但这没有解决问题。谷歌控制台消息没有帮助。我试着从模拟器中删除这个应用程序,但没有什么区别。有什么建议要怎么做吗?
***我实际上发现它在一些模拟器上工作,而在其他模拟器上不工作。看来它应该对全部或全部有效。例如,它适用于11而不适用于11 Pro。对SE不起作用。
看来转到模拟器的设备部分并点击“擦除所有内容和设置”可以解决这个问题。不确定是什么问题导致了它,但这修复了它。