Firebase动态链接Android正常但iOS报错NET::ERR_CERT_COMMON_NAME_INVALID
Firebase动态链接iOS 15设备无效问题排查与解决
问题描述
Firebase动态链接在Android设备可正常运行,但iOS 15设备点击时显示链接无效,报错NET::ERR_CERT_COMMON_NAME_INVALID,提示域名无效。使用Flutter版本为2.10.5,相关代码如下:
Future<Uri> getLinK() async { final dynamicLinkParams = DynamicLinkParameters( uriPrefix: "https://develop3.example.in", link: Uri.parse("http://develop3.example.in.page.link/DummyPage/' + id + '/' + type"), androidParameters: const AndroidParameters(packageName: "com.example.app"), iosParameters: const IOSParameters(bundleId: "com.example.app") ); final dynamicLink = await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams); return dynamicLink; }
排查与解决步骤
检查域名证书配置
报错NET::ERR_CERT_COMMON_NAME_INVALID说明证书通用名称(CN)与访问域名不匹配。需确认:develop3.example.in的SSL证书是否覆盖该域名,且Firebase动态链接中转域名(如develop3.example.in.page.link)在证书的SAN(Subject Alternative Name)列表中。- iOS 15对SSL证书校验更严格,必须确保证书未过期、域名匹配,且由受信任CA颁发。
修正DynamicLink参数中的link格式
代码中link参数的Uri拼接存在语法错误:- 字符串拼接的单引号嵌套写法会导致生成的链接包含无效字符(如
' + id + '),需用字符串插值或合法拼接生成URL,示例:// 假设id和type为已定义变量 final targetLink = Uri.parse("http://develop3.example.in.page.link/DummyPage/$id/$type"); final dynamicLinkParams = DynamicLinkParameters( uriPrefix: "https://develop3.example.in", link: targetLink, androidParameters: const AndroidParameters(packageName: "com.example.app"), iosParameters: const IOSParameters(bundleId: "com.example.app") );
- 字符串拼接的单引号嵌套写法会导致生成的链接包含无效字符(如
确认Firebase控制台iOS配置
- 检查Firebase控制台中iOS应用的
bundleId与代码中IOSParameters的bundleId完全一致,注意大小写敏感。 - 确认已上传iOS应用的APNs证书或启用必要的验证配置,确保动态链接关联设置正确。
- 检查Firebase控制台中iOS应用的
验证动态链接域名配置
- 在Firebase控制台动态链接设置中,确认
uriPrefix对应的域名(https://develop3.example.in)已完成域名验证(DNS记录添加正确)。 - 排查iOS设备网络环境,避免代理或VPN导致证书校验失败,可切换网络后重新测试。
- 在Firebase控制台动态链接设置中,确认
内容的提问来源于stack exchange,提问作者Flutter
相关产品推荐
相关产品推荐

