中国移动互联网研发培训专家常用缩写词DOM:文档对象模型IDE:集成开发环境SAX:XML简单APISQL:结构化查询语言UI:用户界面W3C:万维网联盟XIB:Xml界面生成器XML:可扩展标记语言中国移动互联网研发培训专家目前已有4000万台iPhones在用,您无疑对编写iOS应用程序感兴趣。但是从何着手呢?大多数应用程序都会连接网络,那么一个跨越两端的项目(比如说聊天应用程序)又是如何呢?本文将向您介绍如何利用服务器和客户端组件构建一个聊天应用程序。从本文可以学到编写iOS应用程序的整个流程。学完本文之后,我保证您会想要编写一个这样的应用程序。中国移动互联网研发培训专家构建应用程序从架构解决方案开始。图1中的架构展示了iOS设备(这里是iPhone)如何通过两个PHP页面连接到服务器。图1.ChatApp客户端/服务器架构中国移动互联网研发培训专家这两个PHP页面(add.php和messages.php)都连接到数据库,分别用于发布和检索消息。在我提供的代码中,数据库是MySQL,但是您可以使用DB2或者您喜欢的任何其他数据库。我使用的协议是XML。add.php页面返回一个XML消息,指出消息发布是否成功。messages.php页面返回发布到服务器的最新消息。中国移动互联网研发培训专家在您开始之前,我想要介绍一下您将从本文学到的内容。数据库访问。我将向您介绍如何使用PHP向数据库添加行和检索行。XML编码。服务器代码演示如何将消息打包成XML。构建iOS界面。我将详细介绍如何为应用程序构建用户界面。查询服务器。Objective-C代码向messages.php页面发出GET请求,以得到最新的聊天消息。解析XML。使用对iOS开发人员可用的XML解析器,您可以解析从messages.php返回的XML。显示消息。应用程序使用一个定制列表项显示聊天消息;这一方法可以让您了解到如何定制自己的iOS应用程序的外观。中国移动互联网研发培训专家发布消息。应用程序通过add.php将数据发布到服务器,add.php将指导您完成发布过程。定时器。定时器任务用于周期性地轮询messages.php,看何时来了新的聊天项目。对于一个例子来说,这些内容太多了,应该为您开发您想要构建的任何类型的客户端/服务器iOS应用程序提供一组适当的工具。中国移动互联网研发培训专家从创建数据库开始。我将我的数据库叫做chat,您可以给您的数据库随便取个您喜欢的名字。您只需要确保在PHP中更改连接字符串,以匹配数据库的名称。用来为应用程序构建单个表的SQL脚本在清单1中。中国移动互联网研发培训专家DROPTABLEIFEXISTSchatitems;CREATETABLEchatitems(idBIGINTNOTNULLPRIMARYKEYauto_increment,addedTIMESTAMPNOTNULL,userVARCHAR(64)NOTNULL,messageVARCHAR(255)NOTNULL);中国移动互联网研发培训专家这个简单的单表数据库只有4个字段:行的id,这是一个自动递增的整数添加消息的日期添加消息的用户消息本身的文本您可以更改这些字段的大小,以适应您的内容。在生产系统中,您很可能还想要有一个带有姓名和密码字段的用户表,还有一个用户登录界面。对于本例来说,我想要让数据库尽量简单,所以数据库中只有一个表。您想要构建的第一部分代码是清单2中的add.php脚本。中国移动互联网研发培训专家?phpheader('Content-type:text/xml');mysql_connect('localhost:/tmp/mysql.sock','root','');mysql_select_db('chat');mysql_query(INSERTINTOchatitemsVALUES(null,null,'.mysql_real_escape_string($_REQUEST['user']).','.mysql_real_escape_string($_REQUEST['message']).'));?success/中国移动互联网研发培训专家该脚本连接到数据库,并使用已发布的user和message字段存储消息。就是在简单的INSERT语句中,两个值被转义,以解决任何含义不确定的字符,比如说可能会扰乱SQL语法的单引号。为了测试add脚本,您创建一个test.html页面,如清单3所示,它只是将字段张贴到add.php脚本。中国移动互联网研发培训专家htmlheadtitleChatMessageTestForm/title/headbodyformaction=add.phpmethod=POSTUser:inputname=user/br/Message:inputname=message/br/inputtype=submit//form/body/html中国移动互联网研发培训专家这个简单的页面只有一个表单(指向add.php)和两个文本字段(分别用于用户和消息)。然后还有一个Submit按钮,用于执行张贴。test.html页面安装好之后,您就可以测试add.php脚本了。在浏览器中打开测试页面,结果类似于图2,User字段中显示有值jack,Message字段中有值Thisisatest,下面是一个SubmitQuery按钮。中国移动互联网研发培训专家图2.消息发布测试页面从这里,您添加一些值并单击SubmitQuery按钮。如果一切正常,您会看到类似于图3的画面。中国移动互联网研发培训专家图3.成功的消息发布中国移动互联网研发培训专家否则,您可能会得到一个PHP堆栈跟踪,告诉您数据库连接失败或者INSERT语句不工作。消息添加脚本能够工作,下面应该构建messages.php脚本了,它返回消息列表。该脚本展示在清单4中。中国移动互联网研发培训专家?phpheader('Content-type:text/xml');mysql_connect('localhost:/tmp/mysql.sock','root','');mysql_select_db('chat');if($_REQUEST['past']){$result=mysql_query('SELECT*FROMchatitemsWHEREid'.mysql_real_escape_string($_REQUEST['past']).'ORDERBYaddedLIMIT50');}else{$result=mysql_query('SELECT*FROMchatitemsORDERBYaddedLIMIT50');}?中国移动互联网研发培训专家chat?phpwhile($row=mysql_fetch_assoc($result)){?messageadded=?phpecho($row['added'])?id=?phpecho($row['id'])?user?phpecho(htmlentities($row['user']))?/usertext?phpecho(htmlentities($row['message']))?/text/message?php}mysql_free_result($result);?/chat中国移动互联网研发培训专家这个脚本稍微有点复杂。它做的第一件事是完成查询。这里有两种可能:如果提供了past参数,那么脚本只返回超过指定ID的消息。如果没有指定past参数,那么返回所有消息。使用past参数的原因是,您想要客户端是智能的。您想要客户端记住它已经看到过的消息,只寻找那些超过它已经具有的消息。客户端逻辑足够简单,它只保留它找到的最高值ID,并作为past参数发送它。在开始时,它可以发送0作为值,相当于根本就不指定任何内容。脚本的第二部分从查询结果集中检索记录,并将它们编码成XML。如果这一部分脚本能够工作,那么您在浏览器中打开这一页面时,会看到类似图4的效果。中国移动互联网研发培训专家图4.聊天消息列表中国移动互联网研发培训专家服务器脚本就算完成了。当然,您可以添加您想要的任何逻辑,额外的通道、用户验证和登录,等等。对于这个实验性的聊天应用程序,这个脚本已经工作得很好了。现在您可以构建将会使用这个服务器脚本的iOS应用程序了。中国移动互联网研发培训专家iOSIDE叫做XCode。如果您还没有这个IDE,那么需要从AppleDeveloperSite(参见参考资料)下载它。最新生产版本是XCode3,我这里的屏幕截图使用的就是这个版本。现在已经有了一个更新的版本,叫做XCode4,它在IDE中集成了UserInterface编辑器,但是该版本目前还处于预览模式。XCode安装好之后,现在就该使用图5所示的NewProject向导构建应用程序了。中国移动互联网研发培训专家图5.构建一个基于视图的iPhone应用程序中国移动互联网研发培训专家开始