2018正版葡京赌侠诗「iOS」行车服务app 「客户端、后端思路+代码」

  • 日前开了一个行车服务项目,iOS客户端应用Objective-C编写,
    后端采用PHP搭建,部署在阿里云,操作系统为Linux CentOS 7.3,数据库MySQL,服务器也Apache,是比较基础的LAMP组合。
  • iOS端代码有我会讲述整体的开销思路,一些诙谐的功用点吧会详细说说。
  • 后端代码比较简单,想要协调尝试开发API的iOS开发者可以参照。
  • 犯即篇文的机要目的是指向近年来底支付做一个圆回顾,同时期待对发出得的同学提供到有救助,有好多不尽合理和健全之地方,也求各位同学不吝赐教,感谢大家!

先是上总体的作用图:

2018正版葡京赌侠诗 1

show.gif

在POI检索结果页面,地图控件显示为空,是坐模拟器运行的来头,真机效果出色

这里是 iOS项目地址后端项目地址 。如果产生拉,希望点转Star因展示鼓励,感谢~

此地是后端代码简析的篇章后端代码简析

「Tips」:对于发现代码运行报错的同班,项目采用CocoaPods开展第三方库的购并。之前为便于自己对Pods文本夹做了ignore操作。刚刚已更新,大家可直接打开后缀为xcworkspace的门类文件运行。不过这样Github上面的品种体积会比较老。

简介绍:项目UI整体尽量保持了饿了么的蓝色风格,其中一些页面参考了高德地图饿了么Max+的宏图风格。

种效益点

  • 账户、用户资料管理
  • 参照饿了么UI的定点、天气模块
  • 基于高德地图API开发的POI摸索,同时界面也入了片暨高德地图app类似之表征
  • 由定义交互逻辑的约定及结果通知功能
  • 简单参照Max+app的资讯模块
  • 用户历史足迹、历史事件维护

类利用及之API及第三方库

  • 高德地图API
  • 和风天气API
  • 自己搭建的后端相关接口
  • AFNetworking 3.0
  • SDWebImage
  • MBProgressHUD
  • 路内之Icon汪洋用到阿里巴巴的iconfont图标,极力推荐

品类涉嫌的技术点

  • 高德地图API的有关应用。包括地图POI检索导航等功能。
  • GCD的行使示例。包括耗时操作的后台执行、UI更新相关操作相当。
  • NSUserDefaults护卫账户信息。这里是也使用方便,仅供参考。
  • Core Animation的使用。由于TableView加载时采取HUD的用户体验不是异常友善,我好包装了Loading页面。

付出思路

  • #### 登录注册页面

2018正版葡京赌侠诗 2

IMG_2008.PNG

  • 品种初始化时以Tabbar VC作为rootController,如果此时从不账户信息,则采取模态弹出方式弹有登录页面。

  • 及时片比较简单,客户端会先对用户输入的音信进行简短的法定判断,然后调用登录接口。

  • 生一部分有关TextField的点击空白和Return回收键盘和呼出键盘时控件移位防止遮挡的代码可以小心一下。

  • Tabbar VC初始化时,第一单tab栏的VC会进展一定操作,如果此时吧就报到状态,则直接调用发送历史足迹的接口。在非登录状态下,用户点击登录按钮,登录成功时,会往第一只tab栏VC发送一个调用历史足迹接口的通知

  • #### 主界面(tabbar栏首页)

2018正版葡京赌侠诗 3

IMG_2009.PNG

2018正版葡京赌侠诗 4

IMG_2010.PNG

  • ##### 地理位置和天气有。

    • 即时有些是独自包装的View,UI参考了饿了么。地理位置和通知列表按钮的点击事件采取代理到由目前VC实现。
    • 由模拟器定位赢得的坐标无法以高德地图的境内API,我对运行条件做了瞬间判定,如果是模拟器运行,则装了默认坐标,对诺地点大概是北京市海淀区北京理工大学
    • 即VC加载过程遭到,开启定位,在地理位置反编码的中标回调中调用天气信息之接口。注意地理位置和气象信息之UI更新放在主线程执行。
    • 点击地理位置的契时,会模态弹出重新定位的界面,重新定位按钮的点击事件采取代理及由主界面VC实现,避免以这界面再次实例化定位有关的靶子。
  • ##### 功能栏

    • 使用UICollectionView展示。各个CellIcon应用阿里巴巴的iconfont图标,将昔日底图片素材转为字体来运,对于素材整理、高清保真、代码方便来说出特大的频率提升。在Web移动客户端支出世界都十分普遍地在利用。
  • ##### 某平等效VC

2018正版葡京赌侠诗 5

IMG_2011.PNG

  • 这部分UI参考了高德地图附近界面UI以及一些特性。导航栏隐去,最上面是一个地图控件,以及透明的归来按钮。下面是POI信息的tableview。在tableview向阳下滑动时,地图隐去,tableviewframe达成换,导航栏出现。向上滑动到顶部时,tableview没,地图出现,导航栏隐去。
  • tableview滑时特性的落实:通过scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate代办方,判断滑动的样子,从而对tableviewframe及导航栏等要素进行操作。
    代码如下:

//判断滑动手势方向,决定tableview的frame改变
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
  CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];
  if (translation.y>0) {
      NSLog(@"ssssss");
      {
          NSIndexPath *dic = self.poiList.indexPathsForVisibleRows.firstObject;
          if (self.poiList.frame.origin.y == 64 && dic.row == 0){
              [UIView animateWithDuration:0.2 animations:^{

                  NSLog(@"visible:::%@",dic);
                  showMap = YES;
                  self.navigationController.navigationBar.hidden = YES;
                  self.poiList.frame = listFrame;
              }];
          }
      }
  }else if(translation.y<0){
      NSLog(@"tttt");
      if (self.poiList.frame.origin.y == 300){
          [UIView animateWithDuration:0.2 animations:^{
              showMap = NO;
              self.navigationController.navigationBar.hidden = NO;
              self.poiList.frame = listFullFrame;
          }];
      }
  }
}
  • 当界面加载时,使用了好包装的loading页面:

    2018正版葡京赌侠诗 6

    IMG_2018.PNG

    • 于页面view加载的太初步,将loading页的view加入到当下VC的view中。在页面数据加载成功的回调中,调用tableviewreload方法,而后将loading页移除。
    • loading页使用basicAnimation打造了简易的呼吸动画,keyPath为logo图标的透明度。
  • 第一个cell的POI地点默认可预约,显示预约图标,点击上预约界面。

    2018正版葡京赌侠诗 7

    IMG_2012.PNG

    • 此有的跟后端的相逻辑是和谐定义的。一般的预约过程是预约请求发送成功后,一段时间内由公寓家进行同意或拒绝操作,而后客户端收到结果回执。由于本档简单模拟此过程,均采用http商量进行通信。所以自己的兑现方式是后端收到预约请求后,直接利用擅自数方模拟店家的承受或拒绝。一定时间后,客户端调用结果查询的接口来收获预约结果。
    • 贯彻方式吧,点击预定按钮,若预约接口调用成功,按钮字样变为预约中,钟表icon开始旋转,并且按钮变为不可点击状态。与此同时,使用performSelector措施延时调用获取预约结果的接口。在斯网要的中标回调中,向主界面发送通知,而后主界面通知按钮右侧显示通知数量的红图标。如图。
    • 这里通知列表的数码是存在UserDefaults屡遭之,不同装备中无法同。其中涉嫌到一些userDefaults遭受数要求的知,具体可以参考代码。这里是坐需要是临时想有,如果正常实现方式要开获取通知数据的接口。我为着节省开支时间因故用这种方法来套实现了。这个地方以后可以圆~

      2018正版葡京赌侠诗 8

      IMG_2013.PNG

  • #### 资讯Tab栏

2018正版葡京赌侠诗 9

IMG_2014.PNG

  • 这边没费过多之生气。数据预置了网易新闻有关数据。界面UI参考了自我时常以的Max+iOS客户端的消息功能。第一单Cell以全图也背景,可以为此来突出展示主要内容。

  • 消息详情页是一个简约的webView。同样采用了好包的Loading祈求。移除时机就是大概在了webViewfinishLoad回调方法吃。其实对Webview审加载成功时的判断还有不少足以聊的物,日后补偿。

  • #### 设置页面

2018正版葡京赌侠诗 10

IMG_2015.PNG

  • 是页面显而易见是动简单独sectiontableview落实。在页面的viewWillAppear计被,需要调用获取缓存数据大小的艺术,单独更新清除缓存cell的内容。因为在历次切换tab的过程中,缓存数据都起或发生变化。

  • ##### 个人信息

    • 页面还采用tableview心想事成。在信息编辑页面,仿照了微信消息变更页面的逻辑。页面出现常常,立即弹有键盘。关于要textField于页面加载成功时就变成第一响应者的题目,需要重写- (BOOL)becomeFirstResponder法。代码如下:

    - (BOOL)becomeFirstResponder
    

{
[super becomeFirstResponder];
return [self.textInput becomeFirstResponder];
}
“`

2018正版葡京赌侠诗 11

IMG_2016.PNG

  • ##### 历史足迹、历史预定、积分信息

2018正版葡京赌侠诗 12

IMG_2017.PNG

2018正版葡京赌侠诗 13

IMG_2019.PNG


这有吗仍采用了包装的loading页面。如果数据条目为空,则无亮tableview,提示暂无相关信息,如图。

  • ##### 清除缓存

    • 此地实在只是以了SDImageCache的系措施。我们还得排除本app的缓存数据所在目录来上确实祛除缓存的目的,日后议论。
    • 缓存数据获取的始单位是B,我们用除以10241破、2次来判定当前数量是于KB级别或MB级别,并作科学显示。
  • ##### 退出登录

    • 点击是按钮,清除userDefaults遭遇相关数据,然后模态弹出登录页面。
    • 这边可以小心的少数是,我们于模态弹出登陆页,并且又登录后,界面是以剥离登录之前的页面的,也便是tab栏的老三只页面。如果想只要更登录后,界面出现在tab栏的首页,我们得以于模态弹出登录页的好回调中,对时tabVC的selected index拓展安装。代码如下:

    DELoginViewController *loginVC = [[DELoginViewController alloc] init];
            [self presentViewController:loginVC animated:YES completion:^{
                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                    // 耗时的操作
                    dispatch_async(dispatch_get_main_queue(), ^{
                        // 更新界面
                        AppDelegate * appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
                        appDelegate.tabbarVC.selectedIndex = 0;
                    });
                });
            }];
    

代码的关键出思路基本描述了,具体的细节大家好同本人连续交流~项目蒙来多不尽合理的兑现方式,小片段是考虑到时间因素。欢迎大家展开讨论、指教。
起连带的问题,欢迎大家进行留言。项目受到应用的自生接口,部署在自我之阿里云服务器中,可外网访问。请求大家合理使用。

后端项目数据库相关的sql代码,我都达到传至后端项目

倘大家发趣味,以后本人可以另行讲述一下server掬的代码,当然,后端我哉是初学者的水准,仅供想要入门的同桌参考。

自身之个人博客网站地址:
Halo的村办博客
,欢迎大家拜。

代码都开源,地址在文章首部。如果接触一下star,我真的会非常感谢~
halo

发表评论

电子邮件地址不会被公开。 必填项已用*标注