[iOS 8] 「メッセージ」アプリに本文を渡す方法
MessageUI Framework
前回の記事で紹介したように、URL Scheme から「メッセージ」アプリに本文を渡すことはできません。 しかし、MessageUI Framework を使用することで、それと同等の機能を実現することができます。
MessageUI Framework とは
MessageUI Framework は「メール」や「メッセージ」のための標準的なインターフェースを表示するためのフレームワークです。 この場合の画面表示は URL Scheme のように「メール」アプリや「メッセージ」アプリに処理を委譲するものではないので、アプリ間の遷移は行われず、実行中のアプリから離れることはありません。
サンプルコード
import UIKit import MessageUI class ViewController: UIViewController, MFMessageComposeViewControllerDelegate { // ボタンタップ時の処理 @IBAction func messageButtonTapped(sender: UIButton) { if MFMessageComposeViewController.canSendText() { // 送信可能かどうかのチェック let controller = MFMessageComposeViewController() controller.body = "Hello." // 本文 controller.messageComposeDelegate = self self.presentViewController(controller, animated: true, completion: nil) // 画面表示 } } // MFMessageComposeViewControllerDelegate func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) { switch result.value { case MessageComposeResultCancelled.value: // キャンセルした println("cancelled.") case MessageComposeResultSent.value: // 送信した println("sent.") case MessageComposeResultFailed.value: // 失敗した println("failed.") default: println("unknown.") } // 処理完了後、画面を消去する self.dismissViewControllerAnimated(true, completion: nil) } }
実行画面
宛先や件名を指定することも可能です。
まとめ
- 「メッセージ」アプリに本文を渡したいときは、MessageUI Framework を使う
- このフレームワークではアプリ間の遷移は発生しない