从多个联系人的联系人发送短信失败

时间:2018-07-10 14:27:16

标签: ios swift xcode viewcontroller

我正在尝试获得与Sending SMS from Contacts Fails

相同的结果
  • 发送短信或“应用邀请”来联系联系人。

此问题的解决方案有效,但它仅允许您一次向一个人发送一条SMS。 我要做的是一次向多个联系人发送短信。,如果这很简单,请原谅。在过去的14个小时中,我一直忙于编程,现在大多数事情对我来说都变得毫无意义。

这里是我的代码:

 //MARK : VARIABLES
let contactPickerViewController = CNContactPickerViewController()
let messageViewController = MFMessageComposeViewController()


//MARK : VIEW DID LOAD
override func viewDidLoad() {
    super.viewDidLoad()

    //-- set delegates equal to self
    contactPickerViewController.delegate = self
    messageViewController.messageComposeDelegate = self
}

//MARK : MFMESSAGECOMPOSE & CNCONTACTPICKERDELEGATE

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
    self.dismiss(animated: true, completion: nil)
}


func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) {
    //-- select contacts and present message compose view controller
    contacts.forEach { (contact) in
        for data in contact.phoneNumbers {
            let phoneNo = data.value

            //-- configure message view controller
            messageViewController.recipients = [phoneNo]
            messageViewController.body = "Testing Testing"

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.present(self.messageViewController, animated: true, completion: nil)
            })
        }
    }
}

func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
    print("cancelled")
}

1 个答案:

答案 0 :(得分:1)

在您的for循环中,您尝试为每个收件人显示一个MFMessageComposeViewController。这将无法正常工作,因为它将尝试同时显示多个视图控制器。

您可以显示一个MFMessageComposeViewController,其中指定了所有收件人:

var recipients = [String]()
contacts.forEach { (contact) in
    for data in contact.phoneNumbers {
        let phoneNo = data.value
        recipients.append(phoneNo.stringValue)
    }
}

//-- configure message view controller
messageViewController.recipients = recipients
messageViewController.body = "Testing Testing"

self.present(self.messageViewController, animated: true, completion: nil)