iOS15.2下提交App Store的应用出现Firebase .webInternalError无法加载reCAPTCHA
iOS 15.2 环境下 reCAPTCHA 加载返回 webInternalError 解决方案
- 确认问题触发逻辑:该错误仅出现在非测试手机号场景是因为 Firebase 控制台预置的测试手机号会直接跳过 reCAPTCHA 人机校验环节,不会触发 WKWebView 资源加载流程;低版本系统无异常是因为 iOS 15.2 对 WKWebView 的跨域资源校验、TLS 握手规则做了非向下兼容的调整。
- 修复方案1:调整 WKWebView 全局配置
在初始化 Firebase Auth 前,主动修改 WKWebView 的默认配置,关闭 iOS 15.2 新增的欺诈网站检测特性,避免该特性误拦截 reCAPTCHA 的资源加载,代码示例:
import WebKit if #available(iOS 15.2, *) { let webConfig = WKWebViewConfiguration() webConfig.preferences.isFraudulentWebsiteWarningEnabled = false // 配置同步到Firebase Auth的默认web环境 Auth.auth().useAppLanguage() Auth.auth().settings?.isAppVerificationDisabledForTesting = false }
- 修复方案2:补充 ATS 域名例外规则
在项目的 Info.plist 中添加 reCAPTCHA 关联域名的 ATS 例外,明确允许加载谷歌相关域名的资源:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>recaptcha.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSAllowsArbitraryLoads</key> <true/> </dict> <key>google.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSAllowsArbitraryLoads</key> <true/> </dict> </dict> </dict>
- 临时规避方案:如果紧急需要过审,可以针对 iOS 15.2 版本用户新增校验降级逻辑,当第一次触发
webInternalError时,自动切换到短信验证码二次校验的替代流程,绕过 reCAPTCHA 校验环节。
内容的提问来源于stack exchange,提问作者Lance Samaria
相关产品推荐
相关产品推荐

