「iOS」行车服务app 「客户端、后端思路+代码」

By admin in 亚洲必赢app在哪下载 on 2018年9月18日
  • 日前出了一个行车服务项目,iOS客户端采用Objective-C编辑,
    后端采用PHP搭建,部署在阿里云,操作系统也Linux CentOS 7.3,数据库MySQL,服务器也Apache,是比基础的LAMP组合。
  • iOS端代码有我会讲述整体的出思路,一些妙趣横生的意义点吗会见详细说说。
  • 后端代码比较简单,想使团结尝尝开发API的iOS开发者可以参照。
  • 作就篇文的要害目的是对准近期底支付做一个完整回顾,同时想对产生要之同窗提供到片相助,有好多不尽合理和百科之地方,也请各位同学不吝赐教,感谢大家!

率先上圆的成效图:

亚洲必赢app在哪下载 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页面。

支付思路

  • #### 登录注册页面

亚洲必赢app在哪下载 2

IMG_2008.PNG

  • 品类初始化时以Tabbar VC作为rootController,如果此时无账户信息,则运用模态弹出方式弹来登录页面。

  • 就部分比较简单,客户端会先对用户输入的音讯进行简单的合法判断,然后调用登录接口。

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

  • Tabbar VC初始化时,第一单tab栏的VC会进展定位操作,如果这也已经报到状态,则直接调用发送历史足迹的接口。在未登录状态下,用户点击登录按钮,登录成功时,会于第一独tab栏VC发送一个调用历史足迹接口的通知

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

亚洲必赢app在哪下载 3

IMG_2009.PNG

亚洲必赢app在哪下载 4

IMG_2010.PNG

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

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

    • 使用UICollectionView展示。各个CellIcon采用阿里巴巴之iconfont图标,将以往之图片素材转为字体来利用,对于素材整理、高清保真、代码方便来说有庞大的效率提升。在Web移动客户端付出领域已经大广地于行使。
  • ##### 某平等功力VC

亚洲必赢app在哪下载 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页面:

    亚洲必赢app在哪下载 6

    IMG_2018.PNG

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

    亚洲必赢app在哪下载 7

    IMG_2012.PNG

    • 其一部分的同后端的竞相逻辑是友善定义的。一般的预约过程是预约请求发送成功后,一段时间内由公寓家进行同意或拒绝操作,而后客户端收到结果回执。由于本项目简单模拟此过程,均采用http情商进行通信。所以自己的贯彻方式是后端收到预约请求后,直接使用擅自数方模拟店家之收受或拒绝。一定时间后,客户端调用结果查询的接口来博预约结果。
    • 实现方式也,点击预定按钮,若预约接口调用成功,按钮字样变为预约中,钟表icon开始转动,并且按钮变为不可点击状态。与此同时,使用performSelector方法延时调用获取预约结果的接口。在斯网要的功成名就回调中,向主界面发送通知,而后主界面通知按钮右侧显示通知数量的革命图标。如图。
    • 此处通知列表的数额是有UserDefaults遇之,不同装备中无法同。其中涉嫌到有些userDefaults倍受数量要求的学问,具体可参见代码。这里是坐要求是临时想发,如果正常实现方式需要开销获取通知数据的接口。我为省出时间用采用这种艺术来学实现了。这个地方在此后可以圆满~

      亚洲必赢app在哪下载 8

      IMG_2013.PNG

  • #### 资讯Tab栏

亚洲必赢app在哪下载 9

IMG_2014.PNG

  • 这里没费过多的活力。数据预置了网易新闻有关数据。界面UI参考了我每每用的Max+iOS客户端的消息功能。第一个Cell以备图也背景,可以用来突出展示主要内容。

  • 新闻详情页是一个简短的webView。同样采用了自己包裹的Loading祈求。移除时机就是大概在了webViewfinishLoad回调方法吃。其实对于Webview委加载成功时的论断还有众多可以且的事物,日后补充。

  • #### 设置页面

亚洲必赢app在哪下载 10

IMG_2015.PNG

  • 这页面显而易见是使用简单个sectiontableview心想事成。在页面的viewWillAppear道被,需要调用获取缓存数据大小的措施,单独更新清除缓存cell的始末。因为在每次切换tab的历程遭到,缓存数据都发或发生变化。

  • ##### 个人信息

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

    - (BOOL)becomeFirstResponder
    

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

亚洲必赢app在哪下载 11

IMG_2016.PNG

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

亚洲必赢app在哪下载 12

IMG_2017.PNG

亚洲必赢app在哪下载 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;
                    });
                });
            }];
    

代码的第一开发思路基本描述了,具体的细节大家可以跟自继续交流~项目遭到发出不少不尽合理的贯彻方式,小一些是考虑到时刻因素。欢迎大家进行讨论、指教。
出连带的问题,欢迎大家展开留言。项目受到运用的从发生接口,部署于我之阿里云服务器受到,可外网访问。请求大家合理施用。

后端项目数据库亚洲必赢app在哪下载相关的sql代码,我一度落得传至后端项目

假若大家产生趣味,以后本人得以重复讲述一下server掬的代码,当然,后端我吧是新大方的水平,仅供想只要入门的同班参考。

本人之个体博客网站地址:
Halo的民用博客
,欢迎大家看。

代码已经开源,地址在篇章首部。如果接触一下star,我确实会非常感谢~
halo

发表评论

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

网站地图xml地图
Copyright @ 2010-2018 亚洲必赢app官方下载 版权所有