Пригласите друга через SMS в Swift 4

Привет, хочу пригласить друга через SMS. Я пишу следующий код. Если пользователь выбирает это, открывает SMS с текстом, но не отменяет его снова, пользователь не сможет вернуться в приложение.

if indexPath.item == 1
        {
            //SMS
            if MFMessageComposeViewController.canSendText() {

                let urlToShare = self.referalmodeldata[0].referralCodeOnly

                controller1.body = "Hey I just gave an Awesome Assessment on App you can also try it. I scored , Try to beat my score \(String(describing: urlToShare))"

                controller1.messageComposeDelegate = self as? MFMessageComposeViewControllerDelegate
                self.present(controller1, animated: true, completion: nil)
            }
        }

person Srikanth Thirumalasetty    schedule 12.03.2019    source источник


Ответы (1)


Вы неправильно реализовали MFMessageComposeViewControllerDelegate в своем коде.

Прежде всего, вам нужно подтвердить MFMessageComposeViewControllerDelegate с помощью UIViewController, как показано ниже:

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

Следующее, что вам нужно добавить, это метод делегата, как показано ниже:

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

Тогда вам нужно заменить

controller1.messageComposeDelegate = self as? MFMessageComposeViewControllerDelegate

с

controller1.messageComposeDelegate = self

Демонстрационный код будет:

import UIKit
import MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

    @IBAction func sendText(_ sender: Any) {
        if (MFMessageComposeViewController.canSendText()) {
            let controller = MFMessageComposeViewController()
            controller.body = "Message Body"
            controller.messageComposeDelegate = self
            self.present(controller, animated: true, completion: nil)
        }
    }

    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
        self.dismiss(animated: true, completion: nil)
    }
}
person Dharmesh Kheni    schedule 12.03.2019
comment
Да, для электронной почты вы можете следовать этому stackoverflow.com/questions/25981422/ - person Dharmesh Kheni; 12.03.2019
comment
И не забудьте отметить ответ как правильный, если это вам поможет.. :) @SrikanthThirumalasetty - person Dharmesh Kheni; 12.03.2019