描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302509011
本书通过简洁的语言和详细的步骤,帮助读者迅速掌握开发iOS应用程序所需的基本知识,适合有一定编程经验的读者阅读。本书可作为高等学校教材,也可供从事iOS开发的人员参考。
目录Contents第1章iOS应用开发概述1
1.1iOS应用开发的历史与现状1
1.2iOS应用的基本架构2
1.2.1可触摸层2
1.2.2媒体层3
1.2.3核心服务层4
1.2.4核心操作系统层5
1.3iOS应用开发的特点5
1.4iOS开发工具简介6
1.5创建并运行第一个iOS应用9
1.6基础知识与技能回顾11
练习11
第2章为开发做好准备12
2.1客户端的准备12
2.2服务端的准备12
2.2.1Web Services的搭建12
2.2.2DB Server的搭建14
2.3几个必备的基础技能25
2.4基础知识与技能回顾26
练习26
第3章MyDemo项目介绍27
3.1项目背景27
3.2项目需求分析27
3.3项目用例分析27
3.4项目数据库分析28◆iOS项目开发教程目录3.5基础知识与技能回顾29
练习29
第4章用户注册30
4.1用户注册总体设计30
4.1.1流程图30
4.1.2时序图30
4.2数据库的准备31
4.3服务端接口的准备32
4.4用户注册的实现32
4.4.1客户端代码开发32
4.4.2客户端与服务端交互64
4.5用户注册的调试71
4.6让用户免去注册的烦恼73
4.7基础知识与技能回顾73
练习73
第5章用户登录74
5.1用户登录总体设计74
5.1.1流程图74
5.1.2时序图75
5.2服务端接口的准备75
5.3用户登录的实现75
5.3.1客户端代码开发76
5.3.2客户端与服务端交互82
5.4用户登录的调试84
5.5使用第三方账号登录86
5.5.1什么是第三方账号86
5.5.2第三方账号登录方式86
5.5.3使用第三方账号登录86
5.6基础知识与技能回顾95
练习95
第6章向用户展示内容96
6.1数据库的准备96
6.2服务端接口的准备97
6.3实现内容展示静态页面98
6.3.1图文列表展示98
6.3.2详情内容展示115
6.3.3客户端与服务端交互121
6.4图片的处理与效果实现131
6.4.1图片添加手势131
6.4.2分页与翻页133
6.5基础知识与技能回顾138
练习138
第7章支持用户基于LBS的应用139
7.1用户定位139
7.1.1LBS与常见第三方地图139
7.1.2在地图上找到自己140
7.2摇一摇144
7.2.1客户端代码开发145
7.2.2客户端与服务端交互149
7.3基础知识与技能回顾151
练习152
第8章让用户搜索153
8.1服务端接口的准备153
8.2常用搜索方式与应用开发154
8.2.1客户端代码开发154
8.2.2客户端与服务端交互162
8.3基础知识与技能回顾163
练习163
第9章与用户互动164
9.1数据库的准备164
9.2服务端接口的准备165
9.3让用户参与评价166
9.3.1客户端代码开发167
9.3.2客户端与服务端交互178
9.4让用户分享187
9.4.1什么是分享187
9.4.2让用户将内容分享到社交平台187
9.5给用户推送消息191
9.5.1推送原理192
9.5.2第三方推送介绍192
9.5.3集成第三方推送193
9.6基础知识与技能回顾202
练习203
第10章添加商户信息204
10.1服务端接口的准备204
10.2添加商户信息的实现205
10.2.1客户端代码开发205
10.2.2客户端与服务端交互211
10.3基础知识与技能回顾213
练习213
第11章让用户的使用体验更佳214
11.1用户网络环境214
11.2用户手机环境216
11.3基础知识与技能回顾218
练习218
第12章发布和管理iOS应用219
12.1发布iOS应用219
12.1.1申请发布证书219
12.1.2发布应用到App Store224
12.2版本管理229
12.3让用户升级232
12.4基础知识与技能回顾235
练习235
第13章HTML 5236
13.1什么是HTML 5236
13.2用HTML 5实现内容展示236
13.3基础知识与技能回顾242
练习242
参考文献243
前言ForewordiOS平台改变了公众对移动设备的看法,iPhone凭借着功能齐备的应用程序、界面架构以及其他平台无法媲美的触控,提供了方便的手机功能,证明了小屏幕也能成为高效的工作区。
在Apple手机的开发人员看来,用户体验至关重要。他们设计了iOS,其外观和行为不再像笨拙的桌面应用程序的移植版本,用户能够使用手指(而不是光笔或键盘)控制手机,从而让应用程序使用起来更加自然而有趣。
通过AppStore,Apple公司向开发人员提供了一种最佳的数字发布系统。开发人员可以将应用程序提交到AppStore,且只需要支付少量的年度开发人员会费。人们开发了针对各种领域的游戏和应用程序,其范围涵盖了从学前教育到退休生活的所有阶段。由于iPhone、iPod Touch和iPad的用户群非常庞大,因此不管什么内容都能找到合适的用户。
Apple公司每年都会发布新的iOS设备,其速度更快、分辨率更高、功能更强大。每次硬件更新都带来了新的开发机会,提供了将艺术融合到软件中的新途径。
1. 谁能成为iOS开发人员
只要有学习兴趣,有时间探索和使用Apple开发工具,并拥有一台运行Lion的Inter Macintosh计算机,便可开始iOS开发了。虽然不可能在一夜之间就开发出iOS应用程序,但只要多加练习,完全可以在几天内编写出第一款应用程序。在Apple开发工具上花费的时间越多,创建出激动人心的应用程序的可能性就越大。
2. 本书适合的读者
本书是为熟悉iOS开发语言ObjectiveC的读者编写的,读者不需要具有Cocoa和Apple开发的经验;当然,读者如果有一定的开发经验,将会更容易掌握这些工具和技术。尽管如此,本书对读者还是有一定要求的,就是读者必须愿意花费时间进行学习与练习。如果读者只是阅读每章的内容,而不完成其中的项目,就会错过一些重要概念。另外,读者还需认真阅读Apple开发文档,并研究本书介绍的主题,这样才能掌握全部内容。
编著者◆iOS项目开发教程
第5章chapter5
第5章用 户 登 录用户登录功能分为系统登录和第三方账号登录两部分。
在系统登录部分,从界面布局、控件关联、服务端交互等方面介绍系统登录功能开发的完整过程。
在第三方账号登录部分,介绍目前主流的第三方登录方式和以QQ账号登录为案例的具体实现过程。
5.1用户登录总体设计
用户登录时要求用户输入用户名、密码。用户单击登录按钮后,系统将用户账户和密码提交到后台。后台验证如果通过,则登录成功,否则登录失败。
第三方账号登录时要求用户输入第三方账号,如果验证通过,则登录成功,否则登录失败。
5.1.1流程图
用户登录流程如图5.1所示。
图5.1用户登录流程
5.1.2时序图
用户登录的时序过程如图5.2所示。
图5.2用户登录的时序过程
5.2服务端接口的准备
◆iOS项目开发教程第◆5章用户登录本节将用到登录接口,下面给出其详细信息。
接口地址: http://localhost:8080/meServer/user.php?
调用方式: Post
返回数据格式: Json
登录接口请求参数及说明如表5.1所示。
登录接口返回字段及说明如表5.2所示。
表5.1登录接口请求参数请求参数必选类 型说 明actYstringloginusernameYstring用户名passwordYstring密码
表5.2登录接口返回字段返回字段字段类型字段说明flagstring0: 失败,1: 成功msgstring信息说明5.3用户登录的实现
本节首先介绍用XIB布局界面并与所属类进行代码关联。与纯代码布局相比,XIB布局的最大好处是大量减少了代码量,降低了布局难度,方便初学者快速掌握。然后介绍客户端与服务端的交互,让服务端验证用户提交信息。
图5.3用户登录界面
用户登录界面如图5.3所示。
5.3.1客户端代码开发〖*2〗1. 创建登录页面(1) 打开第4章已完成的项目,单击Sections文件夹,按下command N,添加ObjectiveC class,如图5.4所示。
图5.4添加ObjectiveC class
(2) 在Class中输入LoginViewController,在Subclass of中输入FatherViewController,勾选Also create XIB file,如图5.5所示。
2. 绘制登录页面界面
(1) 选择存储目录后,单击导航区下的LoginViewController.xib,拖放两个UILabel、两个UITextField、一个UIImageView、一个UIButton到界面并调整位置,整体效果如图5.6所示。
(2) 设置两个UILabel属性,如图5.7所示。
(3) 设置两个UITextField属性,如图5.8所示。
(4) 设置UIButton属性,如图5.9所示。图5.5创建LoginViewController
图5.6整体效果
图5.7UILabel属性
图5.8UITextField属性
图5.9UIButton属性
3. 关联控件
(1) 分别右击两个UITextField控件,关联New Referencing OutLet到LoginViewController.h中。将第一个控件命名为username,第二个控件命名为password,如图5.10所示。
图5.10关联属性
(2) 右击UIButton控件,关联其Touch Up Inside事件到LoginViewController.h中,Name为registChick,如图5.11所示。
图5.11关联事件
(3) 最终效果如图5.12所示。
图5.12最终效果
4. 设置登录页面为启动页面
(1) 单击AppDelegate.m,引入头文件LoginViewController.h,并删除RegisterView Controller.h,如图5.13所示。
图5.13引入头文件
这里将登录页面设置为window的rootViewController,因此不再需要RegisterView Controller.h,将其删除掉。
(2) 重写application:didFinishLaunchingWithOptions:方法,代码如下: -(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
{
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
LoginViewController vc=[[LoginViewController alloc]initWithNibName:@”LoginViewController” bundle:nil];
UINavigationController nav=[[UINavigationController alloc]initWithRootViewController:vc];
self.window.rootViewController=nav;
self.window.backgroundColor=[UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
5. 连接登录页面与注册页面
(1) 单击LoginViewController.m,引入头文件RegisterController.h,如图5.14所示。
图5.14引入头文件
(2) 重写viewDidLoad方法,添加代码如下: -(void)viewDidLoad
{
[super viewDidLoad];
self.title=@”登录”;
UIBarButtonItem rightBar=[[UIBarButtonItem alloc]initWithTitle:@”注册” style:UIBarButtonItemStyleBordered target:self action:@selector(goRegist)];
self.navigationItem.rightBarButtonItem=rightBar;
}
-(void)goRegist{
RegisterViewController vc=[[RegisterViewController alloc]initWithNi-bName:@”RegisterViewController” bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
}
代码解析:
在viewDidLoad方法中创建右上角的“注册”按钮,单击后跳转到注册页面。
pushViewController:animated方法将视图控制器推入栈顶。
UINavigationController通过栈来实现。添加一个Controller为入栈,释放一个Controller为出栈。
注意:
栈是先进后出。
栈顶是最后一个入栈的对象。
基栈是第一个入栈的对象(栈底)。
(3) 单击RegisterViewController.m,找到viewDidLoad方法,添加代码如下: -(void)viewDidLoad
{
[super viewDidLoad];
self.title=@”注册”;
[self createLeftBtnWithFrame:CGRectMake(0, 0, 24, 24) Image:[UIImage imageNamed:@”backButtonNormal”]];
}
-(void)leftBarChick{
[self.navigationController popViewControllerAnimated:YES];
}
代码解析:
重写父类createLeftBtnWithFrame: Image: 方法,创建左上角的自定义按钮。单击按钮后回到登录页面。用户单击按钮后,NavigationController进行出栈操作,弹出注册页面。
另外,NavigationController还有两个出栈方法:
popToRootViewControllerAnimated:方法: 是否退到栈顶。
popToViewController:animated:方法: 退到指定的viewController。
5.3.2客户端与服务端交互
(1) 单击LoginViewController.m,引入头文件AFHelper,如图5.15所示。
图5.15导入头文件
(2) 重写loginChick:方法,代码如下: -(IBAction)loginChick:(id)sender {
if(self.username.text.length<1||self.password.text.length<1){
UIAlertView alert=[[UIAlertView alloc]initWithTitle:@”提示” message:@”请完整输入” delegate:nil cancelButtonTitle:@”好的” otherButto-nTitles:nil, nil];
[alert show];
}
else{
NSDictionary dic=@{@”act”:@”login”,@”username”:_username.text,@”password”:_password.text};
[AFHelper downDataWithDictionary:dic andBaseURLStr:@”http://localhost: 8080/meServer/” andPostPath:@”user.php?” success:^(NSDictionary dic){
if([dic[@”flag”]intValue]==1){
NSLog(@”登录成功”);
[USER_DEFAULT setBool:YES forKey:@”isLogin”];
[USER_DEFAULT setObject:_username.text forKey:@”username”];
[USER_DEFAULT synchronize];
}else{
UIAlertView alert=[[UIAlertView alloc]initWithTitle:@”提示” message:dic[@”msg”] delegate:nil cancelButtonTitle:@”好的” otherButtonTitles:nil, nil];
[alert show];
}
}];
}
}
代码解析:
上面代码中,程序先判断用户是否完整输入。如果没有完整输入,则提示“请完整输入”,否则提交用户输入的用户名和密码给服务端验证。服务端如验证成功,则在Debug区打印“登录成功”。服务端若验证不成功,则弹出对话框,告知用户错误信息。
登录成功后,程序用NSUserDefaults来保存用户登录状态和用户名。
NSUserDefaults进行用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动应用程序后能恢复上次的设置。该数据实际上是以“键值对”形式保存的(类似于NSDictionary),因此需要通过key来读取或者保存数据(value)。
评论
还没有评论。