本章内容 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ2h1YXdlbmthbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="right" width="200" height="300" alt=""> ●    iOS应用中的网…
作者:Jack Cox.Nathan Jones.John Szumski 译者:张龙  勘误  前言  第 I 部分 理解iOS与企业网络 这一部分从高层次概览了iOS网络以及针对移动网络架构的最佳实践.   第 1 章 iOS 网络功能介绍 本章回顾了用于将设备连接到服务器或是其它设备的网络编程基础知识以及iOS提供的API. 第 2 章 设计服务架构 本章介绍了部署设备友好的网络应用的架构模式.  第 II 部分 HTTP请求:iOS网络功能 这部分深入介绍了iOS 设备与服务器通信所需的…
本书内容: 在客户端设备与服务器之间执行HTTP请求 管理客户端设备与服务器之间的数据负载 处理HTTP请求的错误 保护网络通信 改进网络通信的性能 执行Socket层的通信 实现推送通知 单个设备上的应用间通信 多个设备上的应用间通信 源代码网站: www.wrox.com 或 www.tupwk.com.cn/downpage…
VII页 , 倒数第二行, “其他” 应为 “其它” X页, 源代码有错误,说是有19章,实际一共13章 XI页,勘误表的链接也是错误的  .是该书的<Beginning ASP.NET 4.5: in C# and VB>…
CRM2013版本 IOS APP 说明(IPhone.IPad) IPhone版本 首页 CRM APP在登录时输入账号信息,可以进行首面.其首页显示内容可以在CRM后台设置. 系统默认显示:Phone Call.Email.account.contact.lead.task.opportunity.campaign.user.appointment. 客户列表 点击客户,进入客户列表.其界面可以新增.查找.选择不同的视图列表和回到主页. 新建界面: 查询界面 查询以city开头的客户名称显示…
内含<VC网络高级编程>电子书 及源代码. 第一章.TCP/IP协议.第二章.Winsock网络编程接口:第二章.Visual C++与网络编程:第四章.基本网络编程技术:第五章.Telnet协议的实现:第六章.Http协议的实现:第七章.Ftp协议的实现:第八章.文件下载:第九章.UDP协议的实现: 下载地址:http://download.csdn.net/my…
最近因为工作的需要,.因为时间短的开发周期 开发的需要 积 至iphone 和 ipad 台 执行 优势的版本号 1.安装包,轻松管理,分布 2.您下载iphone,ipad 会自己主动下载 3.审核一次通过,节约上线时间 一个版本号的缺点 1.安装包会非常大,两套资源放入一个安装包 2.代码中各种设备推断.会导致代码混乱(只是这个人为减少) 3.ipad版本号的体验会相对差点(仅仅要产品可接受) 两个版本号的长处 1.能够分开设计,毕竟ipad 能够做一些iphone做不到的事情(体验也会好非…
使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic, strong) Reachability *reachability; 注册为通知中心的的观察者 // 在通知中心注册观察者 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkS…
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    // Override point for customization after application…
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { self.viewController = [[[_ViewController alloc] initWithNibName:@"_ViewController_iPhone" bundle:nil] autorelease]; } else { self.viewController = [[[_ViewControll…
Bonjour就是这样一种技术:设备可以通过它轻松探测并连接到相同网络中的其他设备,整个过程只需要很少的用户参与或是根本就不需要用户参与.该框架提供了众多适合于移动的使用场景,如基于网络的游戏,设备间的文件共享,甚至是家庭自动化. 一,zeroconf概览. 1,寻址 2,解析 3,探测 二,Bonjour概览 1,发布服务 2,浏览服务 3,解析服务 4,与服务进行通信 三,实现基于Bonjour的应用 1,员工应用 2,顾客应用 四,总结 Bonjour是一项非常棒的技术,可以实现自组织网络…
Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况.比如在丛林深处,高速公路上或是建筑物的地下室等. 一,Game Kit基础 除了底层的网络通信特性外,Game Kit还包含了一些特定于游戏的技术,比如成就,排行榜和比赛等. 蓝牙虽然具有不依赖于网络基础设施的独特优势,不过也有一些较大的缺陷.32英尺的最大接接范围比Wi-Fi网络小太多了,而后者可以跨越多个访问点来覆盖更大范围.…
一,URL方案 URL方案有3个主要用途:根据设备上其他应用的存在与否调整逻辑,切换到其他应用以及响应打开你的应用的其他应用.你还可以通过URL方案从某个站点或是在基于Web的认证流程结束是打开应用. 1,实现自定义的URL方案. 2,感知其它应用的存在. 3,高级通信. 1)base64编码,专门用于将二进制数据表示为ASCII文本字符串.可以使用一个标准化的转换表格将二进制数据的每6位编码为一个字符. 2)要想创建图像数据字符串,需要使用之前介绍的3个步骤.序列化图片,使用base64对其进…
一,本地通知 本地通知有64位的最大限制.虽然,你依然可以调度通知,不过到到达的通知数被限定为接近64个,并且按照fireDate的顺序排序,系统会忽略掉其余的通知.这意味着如果现在有64个调用的本地通知,那么在调用另一个通知会丢弃掉fireDate距当前日期最远的那个通知.循环通知会被当作单个通知,因为它们会自动被系统重新调度.如果超出这个限制,就应该检查一下该如何吸引用户,看看本地通知是否为正确的方式. 二,远程通知 APN负载是JSON对象,并且被严格限制为256字节.需要确保负载不会超过…
一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连接网络的接口. 2,嗅探软件. OS X自带命令行数据包嗅探器topdump,它是OS X中大多数其他嗅探器的根基. 1)使用tcpdump进行捕获. 2)使用Wireshark进行捕获. 二,操作网络流量 1,配置Charles 2,HTTP断点. 3,重写规则. 三,模拟实现的网络状况. 网络数…
在iOS上,有一个库叫做Core Foundation networking或CFNetwork,它是对原始Socket的轻量级封装,不过它很快对于大多数常见场景来说变得非常笨重了.最后,添加了另一层(NSStream)来封装CFNetwork,并且作为最基础的Objective-C网络API.大家更熟悉的类(比如NSURLConnection与UIWebView)都是非常易于使用的,而且能够通过很少的代码完成很多事情,这都是由于这些底层库所提供的坚实基础而实现的. 一,BSD Socket A…
一,度量网络性能 1,网络带宽 用于描述无线网络性能的最常见度量指标就是带宽.在数字无线通信中,网络带宽可以描述为两个端点之间的通信通道每秒钟可以传输的位数.现代无线网络所能提供的理论带宽是很高的.不过请记住,运营商与网络设备提供商引用的带宽数字常常是该项技术的理论最大值,网络设备使用的实际带宽可能与这个最大值之间存在很大的偏差. 2,网络延迟. 度量网络性能的第2个因素是网络延迟,指的是网络包在两个端点间一次往返所需的时间.无线运营商很少会提到网络的延迟数据,不过延迟却会对应用的实际性能造成很…
一,验证服务器通信. 二,HTTP认证. 手机银行应用有两种认证模式:标准验证与快速验证.标准验证只是提示用户输入用户名与密码,而快速验证则让用户注册设备,然后使用PIN进行验证,每次验证时无需用户名和密码.要想确保快速认证的安全性,如果用户选择在给定的认证请求中注册设备,那么服务器响应就需要包含一个额外的属性,即用户的证书.应用会存储这个证书,并在随后启动时检查,从而确定应该显示哪个认证视图. 1,HTTPBasic,HTTP Digest与NTLM认证. 2,客户端证书认证. 三, 使用哈希…
一,在接口契约中处理错误. 二,错误状态可能不正确. 设备模糊地确认操作是崇拜失败的.比如,移动应用发出HTTP请求以在两个账户间转账.请求被银行系统接收并正确地处理:然而,由于网络失败应答却丢失了,NSURLConnection报告超时.超时发生了,但却是在转账请求成功之后发生的.如果重试该操作,就会导致重复转账,可能会造成用户透支. 三,验证负载. JSON和XML就具备了验证机制的负载格式,不过,以逗号分隔的值文件与HTML就没有这种机制. 四,分离错误与正常的业务状况. 五,总是检查HT…
一,操作系统错误. iOS人机界面指南中,Apple建议不要过度使用AlertViews,因为这会破坏设备的使用感受. 操作系统错误: 1,没有网络. 2,无法路由到目标主机. 3,没用应和监听目标端口. 4,无法解析目标主机名. 二,HTTP错误. 404错误是一种常见的HTTP错误,表示找不到URL指定的资源. 一共有5类HTTP错误: 1,信息性质的100级错误. 2,成功的200级错误. 3,重定向需要的300级错误. 4,客户端错误400级别. 5,下游错误500级别. 三,应用错误.…
考虑一个字节是如何从设备发往运程服务器以及如何从远程服务器将这个字节接收到设备,这个过程只需要几百毫秒时间,不过确要求网络设备都能正常工作才行.设备网络和网络互联的复杂性导致了分层网络的产生.分层网络将这种复杂环境划分成了更加易于管理的模块.虽然这对程序员很有帮助,不过当数据在各个层之间流动时可能会产生之前提到的网络错误. 参考资料:<iOS网络高级编程-iPhone和iPad的企业应用开发>…
Web Service可以通过多种格式返回结构化数据, 不过大多数时候使用的是XML与JSON.也可以让应用只接收HTML结构的数据.实现了这些Web Service或是接收HTML文档的应用必须能解释这种结构化数据并将其转换为对于应用上下文有意义的对象. 一,XML 使用原生解析库的另一个考虑因素就是它们是由Apple发布并提供支持的.这意味着它们会针对iOS操作系统未来的每次发布都进行完全的测试以确保向后兼容性.在评估应用中到底该使用哪个解析器时,这些都是要考虑的因素. 二,JSON 从iO…
负载指的是在服务的请求响应事务中交换的数据.常见的负载格式包括XML,JSON与HTML. 进入与发出的负载数据存在很多形式与大小.比如,有些开发者会使用原生的字符串或是以分隔符分开的数据与Web Service进行通信.这么做虽然简单,不过技术上却不具备可扩展性,难以处理复杂的数据结构,可能会导致很多问题. 一,XML XML是一种标记语言,用于编码和组织数据. 二,JSON JSON是一种用于交换格式化信息的轻量级数据格式. JSON支持的数据类型以及与之关联的格式规则: 1,数字:无双引号…
协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. 简单对象访问协议(SOAP)是个轻量级协议,用于通过可扩展标记语言实现系统间的结构化数据交换.SOAP消息构成了Web Service栈的基础,很多企业建立的服务层都以SOAP作为面向服务架构的基石,可以服务于防火墙内外的客户端. 2,表述性状态转移. 表述性状态转移(REST)是由Roy Fiel…
Cookie是HTTP协议在首个版本之后加入的一个重要组件.它向服务器提供了追踪会话状态的能力,同时又无须维持客户端与服务器之间的连接.在浏览器客户端,Cookie值是由服务器通过请求提供的,,然后被放到随后的请求中.由于设计Cookie的目的是追踪会话状态,因此它们通常会非常小,基本上是几十到几百个字节. 参考资料:<iOS网络高级编程-iPhone和iPad的企业应用开发>    …
异步请求需要运行循环.当数据传递到服务器或是被客户端接收时,运行循环用于实现事件与委托对象之间的通信.异步请求在发出时,会在当前线程的运行循环上操作,这个实现细节是很重要的,因为在GCD块中或者是通过NSOperationQueue创建的线程并没有运行循环.因此,如果在后台线程上发出了异步请求,那么还需要确定线程是有运行循环还是使用了别的运行循环.如下代码片断展示了如何显示地将请求处理指定给运行循环. NSURLConnection connection=[[NSURLConnection al…
一,同步请求的最佳实践. 1,只在后台过程中使用同步请求,除非确定访问的是本地文件资源,否则请不要在主线程上使用. 2,只有在知道返回的数据不会超出应用的内存时才使用同步请求.记住,整个响应体都会位于代码的内存中.如果响应很大,那么可能导致应用出现内存溢出问题.此外,当代码将响应解析为所需的格式时可能需要复制返回的数据,这会导致内存增加一倍. 3,在处理返回的数据前,验证错误与调用返回的HTTP响应状态码. 4,如果源URL需要验证,那么不使用同步请求,因为同步框架并不支持对认证请求做出响应.唯…
一,GET方法. 从服务器获取一段内容,用HTTP术语来说就是实体.GET请求通常不包含请求体,不过也是可以包含的.有些网络缓存设施只会缓存GET响应.GET请求通常不会导致服务器端的数据变化. 二,POST方法. 使用客户端提供的数据更新实体.POST请求通常会在请求体中加入应用服务器所需的信息.POST请求是非幂的,这意味着如果处理多个请求,那么结果与处理单个请求是不同的. 三,HTTP虽然使用了有状态的TCP传输层,但HTTP却是个无状态协议.这意味着HTTP服务器并不会保留关于某个请求的…
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //URL百分号编码 //URL编码会编码&,问号和其他标点符号. NSString *urlString=@"http://myhost.com?query=This is a question"; NSString *encoded=[u…
http://user:password@hostname:port/absolute-path?query. http:  协议 user:password@   认证 hostname:  主机名 port    端口号 /absolute-path   绝对路径 ?query    查询字符串 参考资料:<iOS网络高级编程-iPhone和iPad的企业应用开发>    …