iOS學習筆記——打電話、發短信

電話、短信是手機的基礎功能,iOS中提供了接口,讓我們調用。這篇文章簡單的介紹一下iOS的打電話、發短信在程序中怎么調用。

1、打電話

[cpp]view plaincopy

print?

[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"tel://10010"]];//打電話

使用openURL這個API打電話結束后,返回的是系統的撥打電話界面,如何才能返回自己的應用呢?有兩種方法與大家分享。

第一種是用UIWebView加載電話,這種是合法的,可以上App Store的。

代碼如下:

[cpp]view plaincopy

print?

UIWebView*callWebview?=[[UIWebView?alloc]?init];

NSURL?*telURL?=[NSURL?URLWithString:@"tel:10010"];

[callWebview?loadRequest:[NSURLRequest?requestWithURL:telURL]];

//記得添加到view上

[self.view?addSubview:callWebview];

第二種是私有方法,不能上App Store的(自己沒試過)。

[cpp]view plaincopy

print?

[[UIApplication?sharedApplication]?openURL:[NSURL?URLWithString:@"telprompt://10010"]];

上面的代碼只是把第一個方法中的tel為telprompt.

2、發短信

iOS中可以使用兩種方式發送短信,最簡單是使用openURL:

[cpp]view plaincopy

print?

[[UIApplication?sharedApplication]openURL:[NSURL?URLWithString:@"sms://10010"]];//發短信

上面方式無法指定短信內容,iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了發送短信的接口,可以像發送郵件那樣不用跳出程序來發送短信. 介紹可參閱Message UIFramework Reference

MFMessageComposeViewController提供了操作界面使用前必須檢查canSendText方法,若返回NO則不應將這個controller展現出來,而應該提示用戶不支持發送短信功能.

messageComposeDelegate :代理,處理發送結果

recipients ?:收信人<列表,支持群發>

body :短信內容

Frameworks中要引入MessageUI.framework

#import

添加協議:

[cpp]view plaincopy

print?

#import?

@interface?DemoViewController?:?UIViewController?

@end

調用MFMessageComposeViewController,同時實現協議MFMessageComposeViewControllerDelegate。

[cpp]view plaincopy

print?

-?(void)showMessageView

{

if(?[MFMessageComposeViewController?canSendText]?){

MFMessageComposeViewController?*?controller?=?[[MFMessageComposeViewController?alloc]init];//autorelease];

controller.recipients?=?[NSArray?arrayWithObject:@"10010"];

controller.body?=?@"測試發短信";

controller.messageComposeDelegate?=?self;

[self?presentModalViewController:controller?animated:YES];

[[[[controller?viewControllers]?lastObject]?navigationItem]?setTitle:@"測試短信"];//修改短信界面標題

}else{

[self?alertWithTitle:@"提示信息"msg:@"設備沒有短信功能"];

}

}

//MFMessageComposeViewControllerDelegate

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

[controller?dismissModalViewControllerAnimated:NO];//關鍵的一句???不能為YES

switch(?result?)?{

caseMessageComposeResultCancelled:

[self?alertWithTitle:@"提示信息"msg:@"發送取消"];

break;

caseMessageComposeResultFailed://?send?failed

[self?alertWithTitle:@"提示信息"msg:@"發送成功"];

break;

caseMessageComposeResultSent:

[self?alertWithTitle:@"提示信息"msg:@"發送失敗"];

break;

default:

break;

}

}

-?(void)?alertWithTitle:(NSString?*)title?msg:(NSString?*)msg?{

UIAlertView?*alert?=?[[UIAlertView?alloc]?initWithTitle:title

message:msg

delegate:self

cancelButtonTitle:nil

otherButtonTitles:@"確定",?nil];

[alert?show];

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容