iOS Swift实现DeepLink后避免显示百分号编码问题求助
问题解决:DeepLink传递字符串到Bear后显示编码内容
问题根源
你做了重复的URL编码操作:
- 手动对原始字符串执行了
addingPercentEncoding编码 - 把已编码的字符串传给
URLQueryItem的value - 但
URLComponents生成最终URL时,会自动对query参数的value再次编码 - 双重编码导致Bear收到的是经过两次转义的内容,所以显示
%20、&这类编码字符
解决方法
直接用原始字符串作为URLQueryItem的value,让URLComponents自动完成编码,不用手动处理。
修正后的代码
let text = "By submitting, I confirm that I am an American, above 18 yrs of age & residing in America. I have read & agree to American Bank. I also agree to receive calls, SMS & WhatsApp messages from American Bank" // 移除手动编码步骤,直接传入原始文本 var components = URLComponents(string: "bear://x-callback-url/create")! components.queryItems = [ URLQueryItem(name: "title", value: "Title"), URLQueryItem(name: "text", value: text), // 此处使用原始字符串 URLQueryItem(name: "x-success", value: "myapp://bear-note-created") ] // 生成的URL会自动完成正确编码,不会出现双重转义问题 if let url = components.url { // 执行DeepLink跳转逻辑 }
额外说明
URLComponents的核心作用就是自动处理URL各部分的编码/解码,手动提前编码反而会打乱其处理流程。像&这类特殊字符,它会自动转成%26,Bear接收到后会正确解码显示为&,不会留下编码痕迹。
内容的提问来源于stack exchange,提问作者user4150758
相关产品推荐
相关产品推荐

