標籤:ios8 swift ui設計 mfmessagecompose uiapplication
今天來講一下如何讓我們的APP可以訪問系統的簡訊和電話功能。首先來說簡訊功能,比較簡單,跟之前的做法差別不大,要使用UIApplication,它是一個單例。我們的功能是點擊一個按鈕,然後撥通一個內建的電話,需要在button的action中加入如下語句:
@IBAction func phoneBtn(sender:UIButton){ // var url1 = NSURL(string: "tel://"+canguanArray[0].tel) var url1 = NSURL(string: "tel://10086") UIApplication.sharedApplication().openURL(url1!) }
tel關鍵字代表電話,跟之前oc上的做法差不多,如果要撥打的電話是傳值獲得的,參考注釋中的寫法。除了tel關鍵字,還有sms關鍵字:
var url1 = NSURL(string: "sms://10086")
這樣的話是開啟了10086的簡訊介面,如果我們要開啟一個瀏覽器介面,使用下面代碼:
var url1 = NSURL(string: "http://blog.csdn.net/cg1991130")
不過使用這種方法發簡訊不能設定簡訊的內容,只能設定收信人。如果我們想要自訂發簡訊的內容的話,使用下面的方法:
首先在vc中匯入標頭檔:
import MessageUI
之後讓vc繼承MFMessageCompose的代理:
class CaipinDetailViewController: UIViewController,MFMessageComposeViewControllerDelegate
func canSendText() -> Bool{ return MFMessageComposeViewController.canSendText() }//用來指示一條訊息能否從使用者處發送 func configuredMessageComposeViewController() -> MFMessageComposeViewController{ let messageComposeVC = MFMessageComposeViewController() messageComposeVC.messageComposeDelegate = self messageComposeVC.body = "HI! \(caipinArray[0].rest) 的 \(caipinArray[0].name) 味道很不錯,邀你共用 -來自SoFun的邀請" return messageComposeVC } func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) { controller.dismissViewControllerAnimated(true, completion: nil) }
然後在按鈕的action方法中加入以下代碼:
@IBAction func share(sender: UIButton) { let shareView = ShareViewController() self.presentViewController(shareView, animated: true, completion: nil) } @IBAction func message(sender: UIButton) { if self.canSendText(){ let messageVC = self.configuredMessageComposeViewController() presentViewController(messageVC, animated: true, completion: nil) } else { let errorAlert = UIAlertView(title: "不能發送", message: "你的裝置沒有簡訊功能", delegate: self, cancelButtonTitle: "取消") } }
我們在真機上測試一下,:
swift UI專項訓練40 用swift實現打電話和發簡訊功能