我正在开发一个带有按钮的iOS应用程序,以使用SMS / iMessage报告问题。我正在使用MFMessageComposeViewController使用以下代码(Swift 3)呈现消息编写接口:
if(MFMessageComposeViewController.canSendText()){
let controller = MFMessageComposeViewController()
controller.messageComposeDelegate = self
controller.body = "Example Message"
controller.recipients = ["2345678901"]
self.present(controller, animated: true, completion: nil)
}
我还实现了MFMessageComposeViewControllerDelegate函数以正确解除。标准文本消息/ iMessage成功发送,但用户没有附加图像的选项。相机,iMessage应用程序等按钮都在那里,但它们被禁用且无法按下。如何启用这些按钮(特别是相机)以允许我的用户将图像附加到使用该应用程序编写的消息?
编辑:
感谢Abdelahad提出的建议。我已经修改了他的响应以允许多个收件人并包含一个邮件正文。我还更新了它以删除已弃用的addingPercentEscapes(using: )
方法。
以下是使用网址打开“消息”应用的解决方案。注意:这会将用户从应用中删除。
let recipients = "2345678901,3456789012" //Phone Numbers
let messageBody = "This is a test"
let sms: String = "sms://open?addresses=\(recipients)&body=\(messageBody)"
let smsEncoded = sms.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
let url = URL(string: smsEncoded!)
UIApplication.shared.openURL(url!)
但我仍然想要一个不会让用户退出应用程序的解决方案。这可能吗?为什么MFMessageComposeViewController会显示按钮而不启用它们?
答案 0 :(得分:1)
不要使用MFMessageComposeViewController使用UIApplication.shared.openURL(url!),但这会将用户从应用中删除
var phoneToCall: String = "sms: +201016588557"
var phoneToCallEncoded = phoneToCall.addingPercentEscapes(using: String.Encoding.ascii)
var url = URL(string: phoneToCallEncoded)
UIApplication.shared.openURL(url!)