Swift 電話、短信

iOS提供了一系列的開發(fā)工具和框架,可以幫助您開發(fā)電話和短信功能的應用程序。以下是一些關鍵的API和框架供您參考:

電話功能:

  • CallKit:CallKit框架可以讓您的應用程序集成到iOS電話應用程序中,實現(xiàn)來電顯示和呼叫管理(目前國內(nèi)未開放)。
  • CoreTelephony:CoreTelephony框架提供了訪問移動網(wǎng)絡和電話功能的API,例如撥打電話和發(fā)送短信。

短信功能:

  • MessageUI:MessageUI框架提供了在應用中創(chuàng)建和發(fā)送短信的功能。您可以使用MFMessageComposeViewController類來顯示短信界面和發(fā)送短信。
  • SMS:SMS框架提供了一些API,允許您在應用程序中直接發(fā)送短信,而不需要顯示短信界面。

一、調(diào)用系統(tǒng)電話、短信

撥打電話

@IBAction func makeTel(_ sender: Any) {
    telField.resignFirstResponder()
   /// 手機號輸入框
    let tel = telField.text
    if let number = tel {
        let url = URL(string: "tel://\(number)")!
        UIApplication.shared.open(url, options: [:])
    }
}

效果如下

IMG_7158.PNG.JPG

發(fā)送短信

@IBAction func sendEmail(_ sender: Any) {
    smsField.resignFirstResponder()
    /// 手機號輸入框
    let tel = smsField.text
    if let number = tel {
        let url = URL(string: "sms://\(number)")!
        UIApplication.shared.open(url, options: [:])
    }
}

效果如下

IMG_7153.PNG.JPG

二、在應用內(nèi)發(fā)送短信

MessageUI框架提供了在應用中創(chuàng)建和發(fā)送短信的功能,首先需要

import MessageUI

并實現(xiàn)代理

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate

用來指示一條消息能否從用戶處發(fā)送

func canSendText() -> Bool{
    return MFMessageComposeViewController.canSendText()
}

配置短信內(nèi)容

func configuredMessageComposeViewController() -> MFMessageComposeViewController {
    let messageComposeVC = MFMessageComposeViewController()
    /// 設置代理
    messageComposeVC.messageComposeDelegate = self
    if let list = recevierField.text?.components(separatedBy: ";") {
         /// 配置收件人
        messageComposeVC.recipients = list
    }
    /// 配置短信內(nèi)容
    messageComposeVC.body = textView.text
    return messageComposeVC
}

展示短信視圖

@IBAction func sendSMS(_ sender: Any) {
    if self.canSendText() {
        let messageVC = self.configuredMessageComposeViewController()
        present(messageVC, animated: true, completion: nil)
    }
}

郵件發(fā)送回調(diào)

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
    controller.dismiss(animated: true, completion: nil)
    
    switch result {
    case .cancelled:
        print("取消發(fā)送")
    case .sent:
        print("已發(fā)送")
    case .failed:
        print("發(fā)送失敗")
        
    @unknown default:
        print("")
    }
}

編輯收件人和郵件內(nèi)容

IMG_7160.PNG.JPG

點擊按鈕,應用內(nèi)視圖

IMG_7161.PNG.JPG
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容