85

まず第一に、Objective-C でこれを解決するスタックオーバーフローの質問がたくさんあるため、これが重複していないことに本当に驚いていますが、Swift を使用した良い答えはまだ見ていません。

私が探しているのは、任意の文字列をテキスト メッセージの本文として特定の電話番号に送信する Swift のコード スニペットです。基本的に、Apple の公式ドキュメントからこのようなものが欲しいのですが、Objective-C ではなく Swift で。

Android では数行のコードで実行できるため、これはそれほど難しくないと思います。

編集: 私が探しているのは、5 ~ 20 行の Swift コードです。これが広すぎることに同意しません。Java (Android 用) では、ソリューションは次のようになります。

package com.company.appname;
import android.app.Activity;
import android.telephony.SmsManager;
public class MainActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        public static final mPhoneNumber = "1111111111";
        public static final mMessage = "hello phone";
        SmsManager.getDefault().sendTextMessage(mPhoneNumber, null, mMessage, null, null);
     }
}

これが Android ソリューションで、わずか 11 行です。Java は Swift よりもはるかに冗長になる傾向があるため、私が求めていることが「広すぎる」とは思えません。Objective-C MessageComposer オブジェクトの使用方法がわからない可能性が高いです。上記は、Swift での使用に関しては不明です。

4

7 に答える 7

134

あなたが本当に答えを得たかどうかはわかりません。私は同様の狩りをしていて、このソリューションに出くわし、それを機能させました。

import UIKit
import MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

    @IBOutlet weak var phoneNumber: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func sendText(sender: UIButton) {
        if (MFMessageComposeViewController.canSendText()) {
            let controller = MFMessageComposeViewController()
            controller.body = "Message Body"
            controller.recipients = [phoneNumber.text]
            controller.messageComposeDelegate = self
            self.presentViewController(controller, animated: true, completion: nil)
        }
    }

    func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
        //... handle sms screen actions
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    override func viewWillDisappear(animated: Bool) {
        self.navigationController?.navigationBarHidden = false
    }
}
于 2014-12-24T03:33:46.423 に答える
29

Swift 3.0 ソリューション:

func sendSMSText(phoneNumber: String) {
        if (MFMessageComposeViewController.canSendText()) {
            let controller = MFMessageComposeViewController()
            controller.body = ""
            controller.recipients = [phoneNumber]
            controller.messageComposeDelegate = self
            self.present(controller, animated: true, completion: nil)
        }
    }

    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
        //... handle sms screen actions
        self.dismiss(animated: true, completion: nil)
    }

    override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.isNavigationBarHidden = false
    }
于 2016-10-04T10:12:28.003 に答える