SnowFlake框架解析

2018-01-25  本文已影响0人  Jaren_lei

2018年的第一场雪,从32层往外看可以看到肆虐的雪花飞扬,不一会儿窗台上积攒了厚厚的一层,同事说这是上海自08年以来最大的一场雪了。想来真是有幸,17年一整年发生了许多的事情,似乎所有积郁的都在这一场雪了.瑞雪兆丰年,希望2018年能不忘初心,砥砺前行  

SnowFlake是什么

- SnowFlake一套iOS的基于Hybrid框架- 支持uiwebview/wkwebview容器。

- 支持iOS8以上设备。

 Hybrid简介

定义:介于Web App与Native App的一种折中方案,底层(框架)部分由iOS/Android开发人员处理,上层(内容展现)部分由Web前端人员处理,用户界面操作逻辑及部分静态资源驻留本地,使得Web App可以对操作迅速反应并在很大程度上实现离线访问。Hybrid App追求趋近于原生App的体验,但目前还较困难。 

 环境依赖 

- cocoapods1.0+

 - python3.6

 基本配置

- 下载源代码,更新pod安装依赖(cd 至项目根目录下,执行`pod install`)

- 预置前端代码zip压缩包,如:client.zip(注意此处压缩包为通过python打包压缩的包,具体原因及用法后面会讲)

- 修改业务宏定义参数,如:  

  1.HybridResource/route.json 文件中  download_url:(修改为自己的下载地址)  

   2.SnowfFlake.pch 文件中  #define CurrentHost @"192.168.10.1" //(初始化需要配置的默认代理转发的域名)             #define RootSource @"client" (即打包出来的zip的包名即是根目录)  

    3.SnowfFlake-Bridging-Header.h 文件中  #define RootHtml @"/index.html"(指定的入口文件)  

- 前端代码压缩包:  前端给到的代码压缩包可能是如下的结构:   

1.在python3环境下之行ziptool脚本命令。该脚本中我添加了压缩包的基本信息,比如:版本号、入口文件、根目录以及加密秘钥等信息,所以需要移动端开发人员自行打包  

2.如果执行报错,情pip根据报错信息进行安装Crypto、pyDes等库。  

pip3 install Crypto

pip3 install pyDes

pip3 install pycrypto

3.关于Crypto加密库,如果更新过之后依旧报错,我上传了一个稳定版本,可以自行下载替换本地关于Crypto库。   我的本地地址在(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (python 3.5)))(Crypto下载地址:链接: https://pan.baidu.com/s/1EEUfx5Pqk_-ZeGbx5jJDMQ 密码: euzp)

 实现原理

- 1.通过和前端进行深度交互,代理转发所有前端ajax请求。这样做的目的是因为wkwebview目前在拦截所有的请求的过程中,因为性能问题,将所有请求中的body信息全部丢失,所以不能成功请求到Post类型的接口数据(交互框架接入的是WebViewJavascriptBridge)所以前端也是需要接入该框架。

- 2.在iOS里面启动一个weberver服务,这个服务映射根目录为前端包文件夹,模拟node服务的方法在本地启动了一个weberver服务,这个模块的核心是:GCDWebServer ,一个轻量级的移动端web服务插件。将映射本地前端代码渲染页面。一但APP进入了后台,该服务会被停止,不能进行访问,防止在浏览器状态下进行访问

- 3.目前前端代码更新的机制为全量更新,即通过传当前zip的版本号给服务器,服务器校验是否需要更新,以及是否强制更新,并将下载链接返回

- 4.转发如下图 

需要注意的是,我这里的请求并没有使用afnetworking 原因是因为在实际转发过程中发现,后端业务api返回的json数据有可能是map即字典类型的,前端可能是需要按照后端返回的字典的顺序进行排序,众所周知字典数据是无序的结构,在使用NSJSONSerialization转化字符串的过程中顺序发生了乱序,这个问题我会再用一片博客进行详细论证。总之,只有通过原始的data类型的数据进行直接转换可以保证数据的时许性。

- 5.其他的业务api如,用户信息保存,校验token,弱网检测等需要根据自己的业务需求和前端进行制定

 总结

- 暂时这些吧,SnowFlake尚有许多不完善之处,如果你有好的建议和想法,期望我们可以共同探讨研究。

上一篇 下一篇

猜你喜欢

热点阅读