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

2014.11.10

この記事は公開されてから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 を使う
  • このフレームワークではアプリ間の遷移は発生しない

リンク