使用包含 link 的默认正文打开 iMessage
Opening iMessage with default body containing a link
我正在尝试使用来自我的应用程序的默认消息打开 iMessage 应用程序。默认消息包含一个 link 到应用程序商店中的应用程序。这是用户邀请人们下载应用程序的一种方式。
用户输入一个数字,然后点击提交按钮,然后打开 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)
}
现在它甚至没有通过 guard 语句。
我想要做的就是打开 iMessage 并在正文中为我的应用程序添加 link。
您需要转义传递给&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
}
我正在尝试使用来自我的应用程序的默认消息打开 iMessage 应用程序。默认消息包含一个 link 到应用程序商店中的应用程序。这是用户邀请人们下载应用程序的一种方式。
用户输入一个数字,然后点击提交按钮,然后打开 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)
}
现在它甚至没有通过 guard 语句。
我想要做的就是打开 iMessage 并在正文中为我的应用程序添加 link。
您需要转义传递给&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
}