この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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 を使う
- このフレームワークではアプリ間の遷移は発生しない