You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Firebase DynamicLink已缩短?iOS重复缩短无报错问题

检测Firebase动态链接是否已缩短并避免重复缩短

针对iOS端Firebase Dynamic Links SDK不会主动检测传入链接是否为已缩短短链接的问题,可通过以下方式实现检测逻辑,避免重复缩短操作:

实现思路

  1. 基础格式校验:通过域名和路径格式快速判断是否符合Firebase短链接特征
  2. 可选API验证:若需要更高准确性,调用SDK缩短接口,通过返回的错误信息确认是否为已缩短链接

代码实现

基础检测函数

import FirebaseDynamicLinks

func isFirebaseShortLink(url: URL, shortLinkPrefix: String) -> Bool {
    // 校验链接协议、域名是否匹配短链接前缀
    guard let prefixURL = URL(string: shortLinkPrefix),
          url.scheme == prefixURL.scheme,
          url.host == prefixURL.host else {
        return false
    }
    
    // 校验路径结构:Firebase短链接路径通常为单个10-20位的随机字符串
    let pathParts = url.pathComponents
    return pathParts.count == 2 && pathParts[1].count >= 10
}

完整使用示例

let targetURL = URL(string: "https://joyone.page.link/pXJG7y5kLPgxoTyg6?title=Klub+Innowator%C3%B3w+OPZZ")!
let shortLinkPrefix = "https://joyone.page.link"

if isFirebaseShortLink(url: targetURL, shortLinkPrefix: shortLinkPrefix) {
    print("该链接已是Firebase短动态链接,无需重复缩短")
} else {
    // 执行正常缩短流程
    DynamicLinkComponents(link: targetURL, domainURIPrefix: shortLinkPrefix)?.shorten { shortenedURL, _, error in
        if let error = error {
            print("缩短失败:\(error.localizedDescription)")
        } else if let url = shortenedURL {
            print("缩短完成:\(url)")
        }
    }
}

进阶API验证(可选)

如果需要确保链接是有效的Firebase动态链接(而非仅格式匹配),可以调用shortenURL方法,通过错误信息判断:

func verifyIfShortLink(url: URL, completion: @escaping (Bool) -> Void) {
    DynamicLinkComponents.shortenURL(url, options: nil) { _, _, error in
        // 若错误信息包含"Cannot shorten a short Dynamic Link",则为已缩短链接
        let isShortLink = error?.localizedDescription.contains("Cannot shorten a short Dynamic Link") == true
        completion(isShortLink)
    }
}

// 使用示例
verifyIfShortLink(url: targetURL) { isShortLink in
    if isShortLink {
        print("已确认是Firebase短动态链接")
    } else {
        // 执行缩短操作
    }
}

说明

  • 基础格式校验无需网络请求,适合大多数场景,能快速过滤重复缩短的情况
  • 进阶API验证需要网络请求,准确性更高,但会增加耗时,可根据业务需求选择

内容的提问来源于stack exchange,提问作者kunass2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:22:28