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恢宏利用阿里巴巴(Alibaba)的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使用阿里巴巴(Alibaba)的iconfont图标,将以往的图片素材转为字体来利用,对于素材整理、高清保真、代码方便来说有巨大的频率进步。在Web移动客户端支付世界曾经不行广阔地在应用。
  • ##### 某一效应VC

2018正版葡京赌侠诗 5

IMG_2011.PNG

  • 这部分UI参考了高德地图附近界面UI以及部分特性。导航栏隐去,最上边是一个地形图控件,以及透明的归来按钮。上边是POI信息的tableview。在tableview向下滑动时,地图隐去,tableviewframe进化,导航栏出现。向上滑动到顶部时,tableview下移,地图出现,导航栏隐去。
  • tableview滑动时特性的落到实处:通过scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate代办方法,判断滑动的趋向,从而对tableview2018正版葡京赌侠诗,的frame以及导航栏等要素举行操作。
    代码如下:

//判断滑动手势方向,决定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端的代码,当然,后端我也是初专家的水准,仅供想要入门的同校参考。

自己的私有博客网站地址:
哈尔o的村办博客
,欢迎大家访问。

代码已开源,地址在小说首部。倘诺点一下star,我真正会卓殊感谢~
halo

相关文章