標籤:style blog class code tar ext
電話、簡訊是手機的基礎功能,iOS中提供了介面,讓我們調用。這篇文章簡單的介紹一下iOS的打電話、發簡訊在程式中怎麼調用。
1、打電話
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10010"]];//打電話
使用openURL這個API打電話結束後,返回的是系統的撥打到電話介面,如何才能返回自己的應用呢?有兩種方法與大家分享。
第一種是用UIWebView載入電話,這種是合法的,可以上App Store的。
代碼如下:
UIWebView*callWebview =[[UIWebView alloc] init]; NSURL *telURL =[NSURL URLWithString:@"tel:10010"]; [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]]; //記得添加到view上 [self.view addSubview:callWebview];
第二種是私人方法,不能上App Store的(自己沒試過)。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://10010"]];
上面的代碼只是把第一個方法中的tel為telprompt.
2、發簡訊
iOS中可以使用兩種方式傳送簡訊,最簡單是使用openURL:
[[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 <MessageUI/MessageUI.h>
添加協議:<MFMessageComposeViewControllerDelegate>
#import <MessageUI/MessageUI.h>@interface DemoViewController : UIViewController <MFMessageComposeViewControllerDelegate>@end
調用MFMessageComposeViewController,同時實現協議MFMessageComposeViewControllerDelegate。
- (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 ) { case MessageComposeResultCancelled: [self alertWithTitle:@"提示資訊" msg:@"發送取消"]; break; case MessageComposeResultFailed:// send failed [self alertWithTitle:@"提示資訊" msg:@"發送成功"]; break; case MessageComposeResultSent: [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]; }