打电话
a.最简单最直接的方式:直接跳到拨号界面

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

[[UIApplication sharedApplication] openURL:url];

缺点

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

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

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

[[UIApplication sharedApplication] openURL:url];

缺点

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

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

if (_webView == nil) {

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

}

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

拨号之前会弹框询问用户是否拨号,拨完后能自动回到原程序

注意:这个webView千万不要设置尺寸,不然会挡住其他界面,他只是用来打电话,不需要显示

发短信

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

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

[[UIApplication sharedApplication] openURL:url];

b.如果想指定短信内容,那就得使用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(@"发送失败");

}

}

发邮件

a.用自带的邮件客户端,发完邮件后不会自动回到原应用

NSURL *url = [NSURL URLWithString:@"mailto://10010@qq.com"];

[[UIApplication sharedApplication] openURL:url];

b.跟发短信的第2种方法差不多,只不过控制器类名叫做:MFMailComposeViewController

假设发送的邮件内容如右图所示,代码实现看备注
 
n邮件发送后的代理方法回调,发完后会自动回到原应用

- (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(@"发送失败");

}

}

打开其他常用文件

如果想打开一些常见文件,比如html、txt、PDF、PPT等,都可以使用UIWebView打开
只需要告诉UIWebView文件的URL即可
至于打开一个远程的共享资源,比如http协议的,也可以调用系统自带的Safari浏览器:

NSURL *url = [NSURL URLWithString:@”http://www.baidu.com"];

[[UIApplication sharedApplication] openURL:url];

应用评分

为了提高应用的用户体验,经常需要邀请用户对应用进行评分
 
应用评分无非就是跳转到AppStore展示自己的应用,然后由用户自己撰写评论
 
如何跳转到AppStore,并且展示自己的应用
方法

NSString *appid = @"725296055”;//APPStore我的应用中应用的基本信息

NSString *str = [NSString stringWithFormat:

@"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

 

iOS 通信常用小功能的更多相关文章

  1. iOS常用小功能

    CHENYILONG Blog 常用小功能 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  ...

  2. iOS 网易彩票-6设置模块三(常用小功能)

    该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblog ...

  3. iOS 常用小功能 总结

    常用小功能 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等 打电话 方法一(不被采用): 拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用 NSUR ...

  4. android 常用小功能(第二版)

    经历过一段岁月,转眼2013的半年都过去了,第二版整理好的小功能,答应大家发布的,直到今日,终于和大家相见了,第二版没有第一版多,大家也可以去参考第一版的内容,希望大家使用愉快! 目录: 1.获取当前 ...

  5. iOS 知识-常用小技巧大杂烩

    原文链接:http://www.jianshu.com/p/7c3ee5e67d03. 自己看的. 1,打印View所有子视图 po [[self view]recursiveDescription] ...

  6. Redis学习——常用小功能

    一.慢查询分析(查询日志:所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似的功 ...

  7. iOS开发常用小技巧记录(持续更新)

    以下问题都是自己在项目中遇到的,解决问题的方法肯定有多种,我所列举的不一定就是最好的解决办法.如有问题欢迎大家指正,补充,交流. 解决同时按两个按钮进两个view的问题.[button setExcl ...

  8. JavaScript 常用小功能

    判断一个是否是隐藏状态 $(curid).is(":visible") 响应回车 $("#password").keydown(function (e) {  ...

  9. JS中部分不常用小功能记录

    1.serializeArray()在表单中使用,必须在form标签中,需要手机的元素要有name属性.源生JS将对象转成json   resulrMK = JSON.stringify(resulr ...

随机推荐

  1. winform总结3> 有趣的bat/winform程序完成自己的任务,然后把自己删除

    在winform的开发过程中往往会有这样的应用场景,执行完成某任务之后,程序需要把本身删除掉.比如卸载.分享一个比较简单实现. 思路就是利用批处理,关闭文件后执行bat,bat执行删除主文件,然后删除 ...

  2. UVA1225

    每增加1个整数,所有位上的对应数都加一.建立一个10000列10行的表,然后查表就可以了. #include<stdio.h> #include<string.h> ][]; ...

  3. css定位

    文档流 所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版 ...

  4. web前端基础知识-(八)Ajax

    Ajax即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,AJAX = 异步 Ja ...

  5. mysql 可以跨库查询

    eg: SELECTcity.ID,city.`Name`,city.CountryCode,city.District,city.Population,adv_site.ADD_DATEFROMci ...

  6. Hibernate--------八大类HQL查询集合

    Hibernate的   八大类HQL查询集合 Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实 ...

  7. Fatal signal xx (SIGSEGV) at

    Fatal signal 11问题的解决方法 http://blog.csdn.net/tankai19880619/article/details/9004619 如何定位Android NDK开发 ...

  8. 如何修改geditor的配置文件 -好像geditor没有文本格式的配置文件? 要使用dconf-editor来配置- geditor自己配置编码格式

    好像geditor没有文本格式的配置文件? 好像是通过一个程序, 叫 dconf-editor 来配置geditor的? 以前是通过gconf-editor来配置的, 但是gconf-editor的配 ...

  9. 海拔高度图*.dem文件的读取—vtkDEMReader

    vtkDEMReader reads digital elevation files and creates image data. Digital elevation files are produ ...

  10. 我的页面定制CSS代码(SimpleGamboge皮肤)

    我的页面定制CSS代码,针对博客园SimpleGamboge皮肤. 调整: 1.左上图片更换为自己的头像 2.扩大左侧栏宽度,缩小右侧主栏宽度宽度 3.扩大内容页面的评论区宽度,工具图标靠左 4.去广 ...