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

iOS 17拼接URL时HTTPS冒号丢失问题求助

iOS 17 中 URL 拼接丢失 HTTPS 冒号的解决方法

问题原因

iOS 17 对 URL 的标准化逻辑进行了更新,当直接拼接两个带 Scheme 的 URL 字符串时(如 APPTEST:// + https://www.google.it),系统会将第二个 URL 中的 :// 视为路径的一部分,并对其进行标准化处理,最终移除冒号,导致生成的 URL 不符合预期。

解决方案

方法一:使用原始数据构建 URL

通过将拼接后的字符串转换为 UTF-8 数据,再利用 URL(dataRepresentation:relativeTo:) 初始化 URL,可以绕过 iOS 17 的标准化处理,完整保留原始字符串格式:

extension URL {
    public var addAppDomainPrefix: URL? {
        let APP_DOMAIN = "APPTEST://"
        let combinedString = "\(APP_DOMAIN)\(self.absoluteString)"
        guard let data = combinedString.data(using: .utf8) else {
            return nil
        }
        return URL(dataRepresentation: data, relativeTo: nil)
    }
}

方法二:手动编码特殊字符(需接收方兼容)

如果目标应用支持解码,可将原 URL 字符串中的冒号进行百分号编码,再拼接前缀,避免系统自动处理:

extension URL {
    public var addAppDomainPrefix: URL? {
        let APP_DOMAIN = "APPTEST://"
        guard let encodedURL = self.absoluteString.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
            return nil
        }
        return URL(string: "\(APP_DOMAIN)\(encodedURL)")
    }
}

注意:此方法生成的 URL 为 APPTEST://https%3A//www.google.it,需确保目标应用能正确解码该格式。

验证结果

使用方法一处理 https://www.google.it 时,将生成符合预期的 APPTEST://https://www.google.it,完美匹配目标应用的 URL 格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:10:12