Created
February 3, 2019 08:18
-
-
Save NeilsUltimateLab/857d1db80f3007c279bb00ceca9c3626 to your computer and use it in GitHub Desktop.
Compose message and present MFMessageComposeViewController
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import Foundation | |
| import MessageUI | |
| class MessageComposer: NSObject, MFMessageComposeViewControllerDelegate { | |
| var reciepient: String? | |
| var message: String? | |
| weak var alertPresenter: UIViewController? | |
| convenience init(reciepient: String?, message: String?, alertPresenter: UIViewController? = nil) { | |
| self.init() | |
| self.reciepient = reciepient | |
| self.message = message | |
| self.alertPresenter = alertPresenter | |
| } | |
| var canSendMessage: Bool { | |
| return MFMessageComposeViewController.canSendText() | |
| } | |
| var composedViewController: MFMessageComposeViewController? { | |
| guard canSendMessage else { | |
| print("Application can not send text, so returning...") | |
| self.showAlert() | |
| return nil | |
| } | |
| guard let reciepient = self.reciepient, reciepient.isValidPhoneNumber else { | |
| print("Phone number is not available") | |
| self.showReciepientAlert() | |
| return nil | |
| } | |
| let controller = MFMessageComposeViewController() | |
| controller.messageComposeDelegate = self | |
| controller.recipients = [reciepient] | |
| controller.body = message | |
| return controller | |
| } | |
| func showAlert() { | |
| let alert = UIAlertController.alert( | |
| title: "Cannot Send Message", | |
| message: "Text messaging is not available on this device. Please check the settings on your device.", | |
| action: .cancel()) | |
| self.alertPresenter?.showAlert(alert) | |
| } | |
| func showReciepientAlert() { | |
| let alert = UIAlertController.alert(title: "Phone number isn't available", message: nil, action: .cancel()) | |
| self.alertPresenter?.showAlert(alert) | |
| } | |
| func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { | |
| controller.dismiss(animated: true, completion: nil) | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment