[iOS 8] 「メッセージ」アプリに本文を渡す方法

この記事は公開されてから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)
    }
}

実行画面

messageui1


messageui2

宛先や件名を指定することも可能です。

まとめ

  • 「メッセージ」アプリに本文を渡したいときは、MessageUI Framework を使う
  • このフレームワークではアプリ間の遷移は発生しない

リンク