1. 程式人生 > >iOS開發:APP撥打電話、發簡訊、發郵件功能

iOS開發:APP撥打電話、發簡訊、發郵件功能

在iOS開發過程中,經常會用到點選公司簡介的電話號碼,會直接撥打電話;或者點選網址連結發郵件,點擊發簡訊按鈕直接發簡訊等,這些功能雖小,但很實用。

一、撥打電話功能:

通過app撥打電話有三種方式,具體程式碼如下所示:

1.直接跳轉到撥打電話介面,不彈出撥打電話提示框,打完電話不會返回到原app中:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];  

或者:

NSURL *url = [NSURL URLWithString:@"tel://10086"];
[[UIApplication sharedApplication] openURL:url];

2.撥打電話之前會彈出一個提示框詢問使用者是否撥號,撥打電話之後能自動返回到原app中:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt:10086"]];  

或者:

NSURL *url = [NSURL URLWithString:@"telprompt://10086"];

[[UIApplication sharedApplication] openURL:url];

3.有彈出提示框,也會返回到原app中:

NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"tel:%@",@"1

0086"];
     UIWebView *callView = [[UIWebView alloc] init];
    [callView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
    [self.view addSubview:callView];

二、發簡訊功能:

1.不可以自定義簡訊內容,直接到發簡訊介面,傳送完簡訊完成後會停留在發簡訊介面中,不能自動返回,需要手動返回原app中:

NSURL *url = [NSURL URLWithString:@"sms://10086"];
     [[UIApplication sharedApplication]openURL:url];

2.可以自定義簡訊,也可以傳送完簡訊直接返回原app中:

首先需要在專案裡面匯入一個發簡訊的框架:MessageUI.framework,如圖所示:




然後在發簡訊呼叫的地方,匯入標頭檔案#import <MessageUI/MessageUI.h>,並且要遵循代理MFMessageComposeViewControllerDelegate,並實現代理方法。 

//代理方法:

(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {

    [self dismissViewControllerAnimated:YES completion:nil];

    switch (result) {
        case MessageComposeResultSent:
            //簡訊傳送成功
            break;
        case MessageComposeResultFailed:
            //簡訊傳送失敗
            break;
        case MessageComposeResultCancelled:
            //簡訊被使用者取消傳送
            break;
        default:
            break;
    }
}

//傳送簡訊方法:

(void)showMessageView:(NSArray *)phones title:(NSString *)title body:(NSString *)body {
    if( [MFMessageComposeViewController canSendText]{
        MFMessageComposeViewController * controller = [[MFMessageComposeViewController alloc] init];
        controller.recipients = phones;
        controller.navigationBar.tintColor = [UIColor redColor];
        controller.body = body;
        controller.messageComposeDelegate = self;
        [self presentViewController:controller animated:YES completion:nil];
        [[[[controller viewControllers] lastObject] navigationItem] setTitle:title];//修改簡訊介面的標題
    } else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示資訊"
                                                        message:@"該裝置不支援傳送簡訊功能"
                                                       delegate:nil
                                              cancelButtonTitle:@"確定"
                                              otherButtonTitles:nil, nil];
        [alert show];
    }
}

//在需要發簡訊的具體地方,呼叫傳送簡訊的方法:

[self showMessageView:[NSArray arrayWithObjects:@"10010",@"10086", nil] title:@"test" body:@"Hello world"];


三、傳送郵件

傳送郵件的方法和傳送簡訊的第二種方法差不多,第一步都是在專案裡面匯入一個發簡訊的框架:MessageUI.framework,然後在發郵件呼叫的地方,匯入標頭檔案#import <MessageUI/MessageUI.h>,並且要遵循代理MFMailComposeViewControllerDelegate,並實現代理方法。

//代理方法:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {

switch (result) {

case MFMailComposeResultCancelled : //取消傳送mail

break;

case MFMailComposeResultSaved : //儲存郵件

break;

case MFMailComposeResultSent : //傳送郵件

break;

case MFMailComposeResultFailed : // 嘗試儲存或傳送郵件失敗

break;

default:

break;

}

//關閉郵件傳送檢視

[self dismissModalViewControllerAnimated:YES];

}


//傳送郵件的方法:

- (void)sendMail {

MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];

//設定委託

mail.mailComposeDelegate = self;

//設定郵件的主題

[mail setSubject:@"CSDN技術分享"];

//設定郵件的內容(兩種格式:一種是html,一種是純文字)

[mail setMessageBody:@"技術交流,多多指教" isHTML:NO];

//設定收件人

NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]",nil];

[mail setToRecipients:toRecipients];

//設定郵件附件為圖片

NSString *path = [[NSBundle mainBundle] pathForResource:@"one" ofType:@"jpg"];

NSData *myData = [NSData dataWithContentsOfFile:path];

[mail addAttachmentData:myData mimeType:@"image/png" fileName:@"man"];

//設定郵件傳送內容

NSString *emailBody = @"CSDN部落格地址:http://blog.csdn.net/cc1991_/article/details/70158723";

[mail setMessageBody:emailBody isHTML:NO];

//郵件傳送的模態視窗

if ([MFMailComposeViewController canSendMail]) {

[self presentModalViewController:mail animated:YES];

}

}

//在需要發郵件的具體地方,呼叫傳送郵件的方法:

[self sendMail];

相關推薦

iOS開發APP撥打電話簡訊郵件功能

在iOS開發過程中,經常會用到點選公司簡介的電話號碼,會直接撥打電話;或者點選網址連結發郵件,點擊發簡訊按鈕直接發簡訊等,這些功能雖小,但很實用。 一、撥打電話功能: 通過app撥打電話有三種方式,具體程式碼如下所示: 1.直接跳轉到撥打電話介面,不彈出撥打電話提示框,打完

iOS開發常用的UIView控制元件——UILabelUITextFieldUIButton

前面幾篇文章已經對iOS開發中比較基本的幾個檔案進行了瞭解,今天主要學習StoryBoard檔案和幾個常見的UI控制元件。 Storyboard功能是在iOS5開始新增的功能,一種新技術的出現大多是為了彌補舊技術的不足,而在storyboard之前iOS 開發設計介面是使用nib檔案(xib

iOS開發App橫豎屏設定問題

在iOS開發中,難免會遇到關於手機螢幕是否切換橫豎屏的問題,比如一個App整體的介面都需要豎屏顯示,那麼只用在Xcode裡面的General裡面的Deployment Info裡面把橫豎屏選項勾選去掉即

iOS開發App國際化配置過程

       在iOS開發過程中難免會遇到App要設定別的國家的語言,這就設計到國際化配置,那麼本篇博文就來講講App怎麼快速進行國際化配置。App語言國際化,也叫語言本地化,根據使用者使用的作業系統的語言設定,自動將App的語言設定成和使用者使用的作業系統的語言一致的語言

iOS內嵌WKWebView撥打電話簡訊郵件沒反應

iOS內嵌WKWebView撥打電話沒反應 <a href="tel:13112345678">撥打號碼</a> 內嵌H5的傳送簡訊,打電話,傳送郵件程式碼的處理 實現

iOS開發筆記之跳轉QQ聊天頁跳轉微信應用內撥打電話

NSURL *url; // QQ url = [NSURL URLWithString:[NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_typ

iOS開發第一個iOS程式分析——AppDelegate.h檔案和檢視View檢視控制器ViewController

在上一篇文章iOS開發:第一個iOS程式分析——代理,生命週期函式中主要介紹了iOS使用Objective-C開發的兩個主要檔案main.m和AppDelegate.m和控制程式生命週期的函式,接下來將介紹另外兩個檔案:AppDelegate.h檔案、UIViewController.m檔案和i

OCiOS開發簡訊郵件打電話及搖一搖實現

簡介 在iOS開發中,可能會用到發簡訊、發郵件、打電話及搖一搖等功能,比如在應用程式的‘關於’介面,我們可能會留下電話號碼或郵箱等聯絡方式,為了方便使用者直接在應用程式中做操作,提升使用者體驗,我們會設計一些互動動作,讓使用者輕鬆的去發簡訊、打電話或發郵件等。

APP撥打電話&簡訊&郵件

在移動開發中我們會經常需要呼叫手機的撥打電話功能、發簡訊功能和發郵件功能,以下是我總結的方法://1.打電話 //方法1 最常用方法 NSURL *telUrl = [NSURL URLWithString:"tel://13161906451"]; UIWebView

iOS開發旋轉縮放平移

一、建立一個UIView #import "ViewController.h" @interface ViewController () @property (nonatomic, strong)

iOS開發2017蘋果APP上架後處於正在稽核狀態下,修改版本資訊或者下架版本的方法

在iOS開發過程中,打包上傳APP的時候,會遇到當你提交版本成功之後,正在稽核的時候,你想起來有問題沒改,或者這個版本需要下架,那麼怎麼操作呢,其實很簡單,具體做法下面給你一一道來。 APP正在處於稽

IOS開發自己開發APP在真機上執行測試的設定

1   點開Xcode   cmd+,開啟系統偏好設定第二個圖示Accounts  新增自己手機註冊用的APPID 2 Xcode----Build Setting ----Packaging----Product Bundle Identifier     設定為空

iOS開發2017 蘋果APP上架更新應用版本注意事項及APP版本迭代步驟方法

前幾天蘋果剛出臺新的政策協議,警告禁止使用APP熱更新,然後就收到蘋果發的警告郵件,然後並沒有在意,直到今天需要更新之前上架應用版本,才發現了問題。如果你的開發者賬號已經同意了蘋果開發者官網的最新協議

iOS開發viewDidLoadviewWillAppearviewDidAppearviewWillDisappearviewDidDisappear

iOS檢視控制物件生命週期包括:init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear、vie

IOS開發-提升app性能的25條建議和技巧

contents oar profile 討論 遊戲開發 when plist 數據庫 formats 前言 這篇文章介紹了作者開發工作中總結的25個iOS開發ti

iOS開發UILabel字號根據屏幕縮放

control after call git 步驟 obj gin begin follow 場景: 假設我們有這樣一個需求,iPhone 6(屏幕寬度為375pt)上的設計圖上的字號為17pt,iPhone 6 Plus上的字號根據屏幕寬度縮放,即字號為(17pt x 4

iOS 開發Method Swizzling

是個 不足 沒有 int from ios 開發 解決方案 它的 nslog iOS 開發之Method Swizzling 前言 如果你還不知道什麽是Method Swizzling,你可以看看NSHipster 的文章 ,我簡單介紹一下,method swizzling

iOS 開發 解決Xcode7.3 不能自動索引標頭檔案,檔名等問題

iOS 開發: 解決Xcode7.3 不能自動索引標頭檔案,檔名,程式碼補全等問題 解決方案: 開啟Xcode –> Target –> BuildSettings –> Apple LLVM 7.1 -Language-Objective C 下面的 Weak

iOS 開發CocoaPods 安裝及問題 ERROR: Error installing cocoapods: activesupport requires Ruby version>=2.2.2

iOS 開發:CocoaPods 安裝以及 ERROR:  Error installing cocoapods: activesupport requires Ruby version >= 2.2.2. 今天用新的Mac筆記本安裝coco

iOS開發UITableview的多選功能實現

一、 先看效果: 最近專案中要運用即時通訊實現群組功能, 在建立群時需要選擇新增多個成員: 二、思路: 第一次點選cell選中, 再次點選取消選中; 三、方法: 只需要設定兩個屬性, 操作兩個方法即可; 1、UITableview 自帶多選功能: //允許多選 _