您的位置:首页 > 移动开发 > IOS开发

IOS开发打电话发短信发邮件

2015-11-24 22:37 721 查看
IOS开发打电话

1、最简单最直接的方式:直接跳到拨号界面

NSURL *url = [NSURL
URLWithString:@"tel://10010"];

[[UIApplication
sharedApplication]
openURL:url];

•缺点
电话打完后,不会自动回到原应用,直接停留在通话记录界面





2、•拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用

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

[[UIApplication
sharedApplication]
openURL:url];

•缺点
因为是私有API,所以可能不会被审核通过



3、创建一个UIWebView来加载URL,拨完后能自动回到原应用

if (_webView ==
nil) {

    _webView = [[UIWebView
alloc] initWithFrame:CGRectZero];

}

[_webView
loadRequest:[NSURLRequest
requestWithURL:[NSURL
URLWithString:@"tel://10010"]]];

需要注意的是:这个webView千万不要添加到界面上来,不然会挡住其他界面

发短信有两种方式

1、直接跳到发短信界面,但是不能指定短信内容,而且不能自动回到原应用

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



发短信-方法2

•如果想指定短信内容,那就得使用MessageUI框架
•包含主头文件
#import
<MessageUI/MessageUI.h>

•显示发短信的控制器
MFMessageComposeViewController *vc = [[MFMessageComposeViewController
alloc] init];

// 设置短信内容

vc.body =
@"吃饭了没?";

// 设置收件人列表

vc.recipients =
@[@"10010",
@"02010010"];

// 设置代理

vc.messageComposeDelegate =
self;

// 显示控制器

[self
presentViewController:vc animated:YES
completion:nil];

•代理方法,当短信界面关闭的时候调用,发完后会自动回到原应用
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result

{

    // 关闭短信界面

    [controller dismissViewControllerAnimated:YES
completion:nil];

   

    if (result ==
MessageComposeResultCancelled) {

        NSLog(@"取消发送");

    } else
if (result == MessageComposeResultSent) {

        NSLog(@"已经发出");

    } else {

        NSLog(@"发送失败");

    }

}



发邮件两种方式

1、用自带的邮件客户端,发完邮件后不会自动回到原应用
NSURL *url = [NSURL
URLWithString:@"mailto://10010@qq.com"];

[[UIApplication
sharedApplication]
openURL:url];



发邮件-方法2

•跟发短信的第2种方法差不多,只不过控制器类名叫做:MFMailComposeViewController
•假设发送的邮件内容如右图所示,代码实现看备注
•邮件发送后的代理方法回调,发完后会自动回到原应用
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error

{

    // 关闭邮件界面

    [controller dismissViewControllerAnimated:YES
completion:nil];

   

    if (result ==
MFMailComposeResultCancelled) {

        NSLog(@"取消发送");

    } else
if (result == MFMailComposeResultSent) {

        NSLog(@"已经发出");

    } else {

        NSLog(@"发送失败");

    }

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: