我正在尝试使用我的应用中的默认消息打开iMessage应用。默认消息包含指向应用商店中应用的链接。这用作用户邀请人们下载应用程序的方式。
用户键入一个数字,然后点击提交按钮,然后打开带有该号码和重新填充的消息的iMessage应用程序。但是,出于某种原因,Swift不会生成URL。这就是我所拥有的
let body = "Download SomeApp by clicking the link below:\n\nhttps://appsto.re/us/someapp.i"
guard let phoneUrl = URL(string: "sms:\(numberTextField.text!)&body=\(body)") else {
return
}
if UIApplication.shared.canOpenURL(phoneUrl) {
UIApplication.shared.open(phoneUrl, options: [:], completionHandler: nil)
}
现在它甚至没有超过警卫声明。
我想要做的就是打开iMessage,并在主体中添加指向我应用的链接。
答案 0 :(得分:4)
您需要转义传递到&body=
参数的内容。您可以使用addingPercentEncoding执行此操作。
例如:
let body = "Download SomeApp by clicking the link below:\n\nhttps://appsto.re/us/someapp.i"
guard let escapedBody = body.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else {
return
}
guard let phoneUrl = URL(string: "sms:\(numberTextField.text!)&body=\(escapedBody)") else {
return
}