使用包含链接的默认正文打开iMessage

时间:2017-07-06 19:44:10

标签: swift nsurl uiapplication imessage

我正在尝试使用我的应用中的默认消息打开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,并在主体中添加指向我应用的链接。

1 个答案:

答案 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
}