您所在的位置: > 主页 > 常德之声 > 消费 > 正文
玩转斗鱼直播APP——请求展示推荐数据篇!来源: 日期:2021-01-15 10:32:47  阅读:-

    请求推荐数据

    请求方式: AFNetworking&Alamofire?

    • 目前在iOS开发中, 请求网络数据, 我们经常会使用第三方框架. 而比较出名的莫过于AFNetworking

    • 不过AFNetworking是使用OC开发的框架,作者又专门针对Swift开发了另外一个框架就是:Alamofire。

    • 因为我们该项目是Swift版本,所有直接采用Alamofire

      • 注:其实Alamofire非常强大,不过我们这里只是发送请求,使用起来是非常方便的。

    集成Alamofire

    • 在iOS开发中,如果我们集成一个第三方框架,通常会使用Cocoapods

    • 因此,我们这里通过Cocoapods进行集成

    • 找到项目所在目录:

      玩转斗鱼直播APP——请求展示推荐数据篇

    • 打开终端:

      • 进入项目目录,执行:pod init操作

        玩转斗鱼直播APP——请求展示推荐数据篇

      • 之后会生成Profile文件,打开Profile文件(记事本、Xcode打开即可,推荐Xcode打开)

      • 将下面代码粘贴过去

        玩转斗鱼直播APP——请求展示推荐数据篇

      • 回到终端,执行pod install --no-repo-update命令

        玩转斗鱼直播APP——请求展示推荐数据篇

      • 关闭程序,通过工作空间打开项目

        玩转斗鱼直播APP——请求展示推荐数据篇

    玩转斗鱼直播APP——请求展示推荐数据篇

    工具类的封装

    • 在实际开发中,为了不过于依赖某一个第三方框架,我们经常会在使用的方式封装到某一个工具类中,以便于某天该框架不更新时不至于很多地方都需要修改。

      • 比如之前的ASIHTTPRequest就出现了不更新的情况

    • 因此,我们在使用之前先封装一个简单的工具类。之后在其它任何地方发送网络请求,都依赖于自己的工具类。如果某一天该框架不再更新,我们希望更换框架,只修改工具类中代码即可。

    • 创建工具类:NetworkTools

      • 为工具类提供类方法,方便调用

      • 请求时,需要传入请求方式、地址(URL)、参数(parameters)、回调闭包

      • 在请求方法中,使用Alamofire发送网络请求

    玩转斗鱼直播APP——请求展示推荐数据篇

    MVVM介绍

    • 前面环境配置完成后,我们要请求首页数据。

    • 数据请求在哪里发送了?

    MVC模式

    • Model-View-Controller是一个Apple官方推荐的权威范式。

      • 苹果使用的MVC的定义是这么说的:所有的对象都可以被归类为一个model,一个view,或是一个controller。

    • 那么把网络代码放哪里?

      • 我们知道,因为控制器是一个大管家,那么不知道如何安放的代码就放置在控制器中

      • 是的,传统的MVC方式我们经常这么做。

    • 该做法的弊端在哪里?

      • 由于大量的代码被放进view controller,导致控制器变的相当臃肿。

      • 在iOS开发中有的view controller里绵延成千上万行代码的事并不是前所未见的

      • 厚重的View Controller很难维护(由于其庞大的规模);包含几十个属性,使他们的状态难以管理;遵循许多协议(protocol),导致协议的响应代码和controller的逻辑代码混淆在一起。

    • 那么究竟应该放在哪里?

      • 显然MVC的3大组件根本没有适合放这些代码的地方。

        玩转斗鱼直播APP——请求展示推荐数据篇

    MVVM模式

    • MVVM来自微软。和MVC很像,并且引入新的组件ViewModel

      • view model是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样的代码的极好的地方。

      • 由于展示逻辑放在了view model中(比如网络请求、请求后的数据解析等等),视图控制器本身就会不再臃肿。

    • 因此,该项目中的请求数据,统一交给ViewModel管理。每一个控制器对应一个属于自己的ViewModel。

      玩转斗鱼直播APP——请求展示推荐数据篇

    发送网络请求

    接口解析

    • 在推荐的数据展示中,有三个请求

      • 最热数据请求

      • 颜值数据请求

      • 其它数据请求

    • 因此我们需要分别发送三个请求,并且当所有的请求数据拿到之后,对数据进行整理分组排序。(因为界面中有用到分组)

    • 因此请求分成五步曲

      • 请求游戏数据,并且转成模型对象

      • 请求颜值数据,并且转成模型对象

      • 请求热门数据,并且转成模型对象

      • 对数据进行整理,并且放入大的数组中

      • 将数据传递给外面控制器,展示数据

    接口描述

    • 接口名称:热门数据(后面热门游戏)

    • 接口地址:http://capi.douyucdn.cn/api/v1/getHotCate

    • 请求参数:

    参数名称参数说明
    time获取当前时间的字符串
    limit获取数据的个数
    offset偏移的数据量
    • 接口名称:颜值数据(第二组颜值数据)

    • 接口地址:http://capi.douyucdn.cn/api/v1/getVerticalRoom

    • 请求参数:

    参数名称参数说明
    time获取当前时间的字符串
    limit获取数据的个数
    offset偏移的数据量
    • 接口名称:大数据数据(第一组热门数据)

    • 接口地址:http://capi.douyucdn.cn/api/v1/getbigDataRoom

    • 请求参数:

    参数名称参数说明
    time获取当前时间的字符串

    玩转斗鱼直播APP——请求展示推荐数据篇
    玩转斗鱼直播APP——请求展示推荐数据篇
    玩转斗鱼直播APP——请求展示推荐数据篇

    展示数据

    普通数据展示(文本数据)

    • 将数据回调给控制器后,控制器拿到数据展示数据即可

      • 将Cell中的控件拖入属性

      • 定义模型对象

    • 在控制器中拿到模型,并且将模型传入给Cell进行展示

    图片数据展示

    • 在设置网络图片时,OC中经常使用SDWebImage框架。

    • 相同的原因,我们使用的Swift项目,因此这里我使用onevcat, 也就是喵神写的Kingfisher

    • 在Profile中加入框架, 并且执行安装命令

      • pod install —no-repo-update

    玩转斗鱼直播APP——请求展示推荐数据篇

    • 使用代码

    玩转斗鱼直播APP——请求展示推荐数据篇

    更多资讯欢迎登陆520it.com。小码哥社区,编程爱好者的家园。

    (正文已结束)

    免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!