iOS17/macOS14下Swift无法打开Microsoft RDP客户端问题求助
iOS 17/macOS 14 下Swift打开RDP客户端的修复方案
修正代码中的语法错误
原代码存在两处明显错误:full%20address=s:\(serverURL))多了一个多余的右括号,应改为full%20address=s:\(serverURL)NSWorkspace.shared.open(validUR)变量名拼写错误,应为validURL
改用URLComponents构建RDP链接(核心修复)
新系统对URL解析规则更严格,手动拼接字符串易出现编码不兼容问题,推荐用URLComponents规范构建链接,自动处理特殊字符编码:// 初始化RDP scheme的URLComponents var components = URLComponents() components.scheme = "rdp" // 构建查询参数 let queryItems = [ URLQueryItem(name: "full address", value: "s:\(serverURL)"), URLQueryItem(name: "audiomode", value: "i:2"), URLQueryItem(name: "disable themes", value: "i:1"), URLQueryItem(name: "username", value: "s:\(userName)") ] components.queryItems = queryItems // 打开链接 if let validURL = components.url { NSWorkspace.shared.open(validURL) }这种方式会自动处理空格、冒号等特殊字符的编码,完全符合新系统的URL解析规范。
排查serverURL和userName的特殊字符
如果serverURL或userName包含空格、@、&等特殊字符,手动拼接字符串会直接破坏URL结构,URLComponents会自动对这些值进行编码,避免解析失败。
内容的提问来源于stack exchange,提问作者mywac Milan
相关产品推荐
相关产品推荐

