使用包含 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
}