iOS之中打电话/发短息/发邮件/吊起QQ聊天的方法总结
NSMutableString * str=[[ NSMutableString alloc ] initWithFormat : @"tel:%@" , @"1333333333"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
2,这种方法,打完电话后还会回到原来的程序,也会弹出提示,推荐这种
NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:%@",@"10000"];
UIWebView * cWebview = [[UIWebView alloc] init];
[callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
[self.view addSubview:callWebview];
3,这种方法也会回去到原来的程序里(注意这里的telprompt),也会弹出提示,这种方法不合法,上传到AppStore无效
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
iOS调用系统的发短信功能可以分为两种:1,程序外调用系统发短信。2,程序内调用系统发短信。第二种的好处是用户发短信之后还可以回到app。这对app来说非常重要。
程序外调用系统发短信
这个方法其实很简单,直接调用openURL即可:
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@sms://1333338888]];
程序内调用系统发短信(发完短信回到应用程序)
1)导入MessageUI.framework,并引入头文件:
2)实现代理方法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;}
}
3)发送短信
-(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:nilcancelButtonTitle:@确定otherButtonTitles:nil, nil];[alert show];}
}
参数phones:发短信的手机号码的数组,数组中是一个即单发,多个即群发。
4)调用发短信的方法
[self showMessageView:[NSArray arrayWithObjects:@13888888888,@13999999999, nil] title:@test body:@你是土豪么,么么哒];
========================================
创建可变的地址字符串对象:
NSMutableString *mailUrl = [[NSMutableString alloc] init];
添加收件人:
NSArray *toRecipients = @[@"写你们自己的邮箱测试@qq.com"]; // 注意:如有多个收件人,可以使用componentsJoinedByString方法连接,连接符为@"," [mailUrl appendFormat:@"mailto:%@", toRecipients[0]];
添加抄送人:
![](http://img0.tuicool.com/7JJJry.gif)
NSArray *ccRecipients = @[@"1229436624@qq.com"]; [mailUrl appendFormat:@"?cc=%@", ccRecipients[0]];
View Code
添加密送人:
![](http://img0.tuicool.com/7JJJry.gif)
NSArray *bccRecipients = @[@"shana_happy@126.com"]; [mailUrl appendFormat:@"&bcc=%@", bccRecipients[0]];
View Code
添加邮件主题和邮件内容:
[mailUrl appendString:@"&subject=my email"]; [mailUrl appendString:@"&body=<b>Hello</b> World!"];
二、使用MFMailComposeViewController发送邮件(原生)
使用前注意:
1)项目需要导入框架:MessageUI.framework
2)使用的Controlelr里导入头文件:#import <MessageUI/MessageUI.h>
获取用户是否设置了邮件账户:
if ([MFMailComposeViewController canSendMail]) { // 用户已设置邮件账户[self sendEmailAction]; // 调用发送邮件的代码
}
sendEmailAction方法代码:
- (void)sendEmailAction
{
// 邮件服务器
MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
// 设置邮件代理
[mailCompose setMailComposeDelegate:self];
// 设置邮件主题
[mailCompose setSubject:@"我是邮件主题"];
// 设置收件人
[mailCompose setToRecipients:@[@"1147626297@qq.com"]];
// 设置抄送人
[mailCompose setCcRecipients:@[@"1229436624@qq.com"]];
// 设置密抄送
[mailCompose setBccRecipients:@[@"shana_happy@126.com"]];
/**
* 设置邮件的正文内容
*/
NSString *emailContent = @"我是邮件内容";
// 是否为HTML格式
[mailCompose setMessageBody:emailContent isHTML:NO];
// 如使用HTML格式,则为以下代码
// [mailCompose setMessageBody:@"<html><body><p>Hello</p><p>World!</p></body></html>" isHTML:YES];
/**
* 添加附件
*/
UIImage *image = [UIImage imageNamed:@"image"];
NSData *imageData = UIImagePNGRepresentation(image);
[mailCompose addAttachmentData:imageData mimeType:@"" fileName:@"custom.png"];
NSString *file = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"];
NSData *pdf = [NSData dataWithContentsOfFile:file];
[mailCompose addAttachmentData:pdf mimeType:@"" fileName:@"dddddd"];
// 弹出邮件发送视图
[self presentViewController:mailCompose animated:YES completion:nil];
}
MFMailComposeViewControllerDelegate的代理方法:
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { switch (result) { case MFMailComposeResultCancelled: // 用户取消编辑 NSLog(@"Mail send canceled..."); break; case MFMailComposeResultSaved: // 用户保存邮件 NSLog(@"Mail saved..."); break; case MFMailComposeResultSent: // 用户点击发送 NSLog(@"Mail sent..."); break; case MFMailComposeResultFailed: // 用户尝试保存或发送邮件失败 NSLog(@"Mail send errored: %@...", [error localizedDescription]); break; } // 关闭邮件发送视图 [self dismissViewControllerAnimated:YES completion:nil]; }
====
三、 使用第三方库SKPSMTPMessage发送邮件
使用前注意:
1)下载第三方库
2)导入类#import "SKPSMTPMessage.h"、#import "NSData+Base64Additions.h"
设置基本参数:
SKPSMTPMessage *mail = [[SKPSMTPMessage alloc] init]; [mail setSubject:@"我是主题"]; // 设置邮件主题 [mail setToEmail:@"填你们自己的@qq.com"]; // 目标邮箱 [mail setFromEmail:@"填你们自己的@qq.com"]; // 发送者邮箱 [mail setRelayHost:@"smtp.qq.com"]; // 发送邮件代理服务器 [mail setRequiresAuth:YES]; [mail setLogin:@"填你们自己的@qq.com"]; // 发送者邮箱账号 [mail setPass:@"填你们自己的"]; // 发送者邮箱密码 [mail setWantsSecure:YES]; // 需要加密 [mail setDelegate:self];
设置邮件正文内容:
NSString *content = [NSString stringWithCString:"测试内容" encoding:NSUTF8StringEncoding]; NSDictionary *plainPart = @{kSKPSMTPPartContentTypeKey : @"text/plain", kSKPSMTPPartMessageKey : content, kSKPSMTPPartContentTransferEncodingKey : @"8bit"};
添加附件(以下代码可在SKPSMTPMessage库的DMEO里找到):
NSString *vcfPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"vcf"]; NSData *vcfData = [NSData dataWithContentsOfFile:vcfPath]; NSDictionary *vcfPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"test.vcf\"",kSKPSMTPPartContentTypeKey,@"attachment;\r\n\tfilename=\"test.vcf\"",kSKPSMTPPartContentDispositionKey,[vcfData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil];
执行发送邮件代码:
[mail setParts:@[plainPart, vcfPart]]; // 邮件首部字段、邮件内容格式和传输编码 [mail send];
SKPSMTPMessage代理,可以获知成功/失败进行后续步骤处理:
- (void)messageSent:(SKPSMTPMessage *)message { NSLog(@"%@", message); } - (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error { NSLog(@"message - %@\nerror - %@", message, error); }
===============调起QQ聊天
UIWebView *webView = [[UIWebViewalloc] initWithFrame:CGRectZero];
NSURL *url = [NSURLURLWithString:@"mqq://im/chat?chat_type=wpa&uin=QQ号&version=1&src_type=web"];//这里的QQ号是我要联系的对方qq号码
NSURLRequest *request = [NSURLRequestrequestWithURL:url];
webView.delegate = self;
[webView loadRequest:request];
[self.view addSubview:webView];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http ://www.baidu.com"]];
iOS之中打电话/发短息/发邮件/吊起QQ聊天的方法总结相关推荐
- 解决ios设备自带邮箱只能接收邮件不能发送邮件问题的方法
解决ios设备自带邮箱只能接收邮件不能发送邮件问题的方法 解决的办法:邮件\通讯录\日历 一: (1)用手机网页登录QQ邮箱网页版 (2)登录后,拉到下面,设置-账户,选择这个号码的作为默认发信帐号– ...
- iOS打电话发短信发邮件总结
今天把APP里常用小功能 例如发短信.发邮件.打电话. 全部拿出来简单说说它们的实现思路. 1.发短信 实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点. 1.1.发短信(1)--URL ...
- web网页实现打电话,发短信,发邮件等:万能的a标签
a标签等href属性中等URL可以是浏览器支持等任何协议 不废话,直接上代码 <a href="tel:10086">打电话10086</a> <a ...
- java代码限制短信发送次数_java如何实现发短息限制日发送次数代码
1.数据表结构 因为需要记录整天的发送记录,所以在此把数据保存到数据库中. 数据表结构如下图所示: type为验证码的类型,例如注册.重置密码等,sendTime的默认值为当前时间. 2.限制日发送次 ...
- AndroidStudio实现拨打电话和发短信(kotlin)
如何利用kotlin语言实现调用系统的电话和短信功能呢,其实很简单,只要利用Intent()并且设置一下其action和data属性即可,action代表的就是行动,如打电话就是ACTION_DIAL ...
- 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...
猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...
- iOS打电话、发短信、发邮件功能
iOS打电话.发短信.发邮件功能 今天把APP里常用小功能 例如发短信.发邮件.打电话. 全部拿出来简单说说它们的实现思路. 1.发短信 实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺 ...
- iOS 打电话、发短信、写邮件、打开常用软件的几种方式
1.打电话的三种方式 2发短信的方式 3.发邮件 //不能发邮件 if(![MFMailComposeViewController canSendMail])return; MFMailCompose ...
- 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程 原文地址:https://www.luoxiao123.cn/1120-2.html 最近逍遥乐在寻找手机网页调用系统短信 ...
最新文章
- Algs4-1.2.12为SmartDate添加一个方法dayOfTheWeek()
- mysql -p与密码之间不能有空格
- python该怎么自学-Python 应该怎么学?
- Photoshop CC2018软件安装资料及教程
- Netty自定义协议
- 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json
- 远程工具连接mysql备份_MySQL远程连接 备份还原
- 一个cube的大小位置方向不断和另一个cube重合
- python读取大文件内容_python读取大文件
- 前端开发使用react实现简易路由
- 为什么越有钱的人负债越多?
- 蓝桥杯 ALGO-88 算法训练 字串统计
- 不依赖第三方环境和服务
- 小甲鱼python课后习题及答案
- Delta3D(6)教程:创建游戏角色-2
- 九爷带你了解 nginx优化
- 麒麟V10SP1的国产化Qt适配
- java录入个人信息程序_Java:用键盘输入个人信息并输出
- 听课记录(09/22)
- 《罗马革命》豆瓣 9.1 从恺撒大帝到屋大维
热门文章
- 《OpenStack部署实践》
- MySQL中删除数据的两种方法_MySQL删除数据库的两种方法
- 电脑怎么恢复数据?恢复数据的3个技巧分享
- VMware Tools安装卸载方法
- 【报错】ValueError: Must pass 2-d input. shape=()
- Android 属性property_get/property_set
- 计算机协会总结大会策划书,计算机协会期末总结大会策划书.doc
- Python 随机生成 范围内 经纬度 坐标信息
- php popen使用,php中popen的使用问题
- 高德地图点击标记并获取标记点坐标和地址信息