SnowFlake框架解析

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尚有许多不完善之处,如果你有好的建议和想法,期望我们可以共同探讨研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270