Приведи друга через смс в swift 4 - PullRequest
0 голосов
/ 12 марта 2019

Привет, хочу сделать ссылку другу через смс пишу следующий код. Если пользователь нажмет на это, откройте 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)
            }
        }

1 Ответ

0 голосов
/ 12 марта 2019

Вы неправильно внедрили 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)
    }
}
...