iOS提供了一系列的開發(fā)工具和框架版保,可以幫助您開發(fā)電話和短信功能的應(yīng)用程序果覆。以下是一些關(guān)鍵的API和框架供您參考:
電話功能:
- CallKit:CallKit框架可以讓您的應(yīng)用程序集成到iOS電話應(yīng)用程序中颅痊,實(shí)現(xiàn)來電顯示和呼叫管理(目前國內(nèi)未開放)。
- CoreTelephony:CoreTelephony框架提供了訪問移動網(wǎng)絡(luò)和電話功能的API局待,例如撥打電話和發(fā)送短信斑响。
短信功能:
- MessageUI:MessageUI框架提供了在應(yīng)用中創(chuàng)建和發(fā)送短信的功能。您可以使用MFMessageComposeViewController類來顯示短信界面和發(fā)送短信燎猛。
- SMS:SMS框架提供了一些API恋捆,允許您在應(yīng)用程序中直接發(fā)送短信照皆,而不需要顯示短信界面重绷。
一、調(diào)用系統(tǒng)電話膜毁、短信
撥打電話
@IBAction func makeTel(_ sender: Any) {
telField.resignFirstResponder()
/// 手機(jī)號輸入框
let tel = telField.text
if let number = tel {
let url = URL(string: "tel://\(number)")!
UIApplication.shared.open(url, options: [:])
}
}
效果如下
發(fā)送短信
@IBAction func sendEmail(_ sender: Any) {
smsField.resignFirstResponder()
/// 手機(jī)號輸入框
let tel = smsField.text
if let number = tel {
let url = URL(string: "sms://\(number)")!
UIApplication.shared.open(url, options: [:])
}
}
效果如下
二昭卓、在應(yīng)用內(nèi)發(fā)送短信
MessageUI框架提供了在應(yīng)用中創(chuàng)建和發(fā)送短信的功能,首先需要
import MessageUI
并實(shí)現(xiàn)代理
class ViewController: UIViewController, MFMessageComposeViewControllerDelegate
用來指示一條消息能否從用戶處發(fā)送
func canSendText() -> Bool{
return MFMessageComposeViewController.canSendText()
}
配置短信內(nèi)容
func configuredMessageComposeViewController() -> MFMessageComposeViewController {
let messageComposeVC = MFMessageComposeViewController()
/// 設(shè)置代理
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)容
點(diǎn)擊按鈕瘟滨,應(yīng)用內(nèi)視圖