Objective c 在iOS上显示cordova自签名SSL证书(接受/拒绝)的警告对话框
我正在开发一个cordova混合应用程序(本质上是一个web应用程序),它应该在iOS和Android上以同样的方式运行。该应用程序可以连接到用户拥有的多个不同服务器,因此我无法控制这些服务器上的安全/SSL/证书。由于用户可能希望在服务器上使用自签名证书进行测试,因此每当SSL握手失败时,应用程序应该能够显示警告并请求用户允许连接到“不安全”的服务器 在Android上,我通过在webViewClient上的OnReceivedSlerRor周围添加一些代码,并在发生这种情况时显示警告/确认对话框,成功地做到了这一点。然而,我在iOS上遇到了麻烦,部分原因是我对这个平台不太熟悉 网络上的资源建议覆盖以下方法:Objective c 在iOS上显示cordova自签名SSL证书(接受/拒绝)的警告对话框,objective-c,cordova,cordova-plugins,Objective C,Cordova,Cordova Plugins,我正在开发一个cordova混合应用程序(本质上是一个web应用程序),它应该在iOS和Android上以同样的方式运行。该应用程序可以连接到用户拥有的多个不同服务器,因此我无法控制这些服务器上的安全/SSL/证书。由于用户可能希望在服务器上使用自签名证书进行测试,因此每当SSL握手失败时,应用程序应该能够显示警告并请求用户允许连接到“不安全”的服务器 在Android上,我通过在webViewClient上的OnReceivedSlerRor周围添加一些代码,并在发生这种情况时显示警告/确认对
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
并返回true。但是,我真正想做的是,每当遇到SSL错误时,向用户显示一个对话框,并让用户决定是否继续。我尝试添加一些代码,在AllowsAnyHttpSceCertificateForHost中显示一个对话框,但这导致了以下问题:
- 不知道连接的生命周期,因此我不知道该方法是仅在SSL错误时调用,还是始终在处理安全连接时调用
- 由于没有在正确的线程上执行,代码无法运行
- 添加了一个dispatch_async调用,使其在主UI线程上运行,解决了该问题,但现在警告来得太晚(即连接已失败)
- 添加了一个dispatch_sync来解决上述问题,现在应用程序只是冻结