龙一 -2

1. saveAlbum 保存图片到相册

就是之前做过的旧版本里面的,电子发票图片下载到相册。

协议:saveAlbum

参数:

{

    url: '...', //图片的服务器链接

}

说明: 通过下载的方式(我试了get和post好像不行,需要用下载的方式),把图片下载到内存二进制文件,然后存到相册。(在我的发票里面测试)


下载ZIP:

在开发工具里面会有一个缺省原始包文件。作为第一次的新用户的包访问。

一:基本数据结构:

(1)检查版本的接口:https://appinfo.zhongsuchina.com/app/version/read

(2)参数: {project_id: 1}, 这里id写死为1,后面外教也应该是这种方式,id到时候传2.

(3)返回值:

{

    data: { //因为服务器封装的原因,这里有一层data, data可能为空对象 {},说明无任何版本号。

        id: "", //文件对象的id, 这个字段非常重要

        url: "", //zip文件的地址

    }

}


二、处理逻辑:

(1)请求版本接口后,拿到文件的id号,这个id我们称为服务器文件id,用host_file_id(字符串类型,从视觉上来讲他其实是个数字id,为了后面处理方便我们用字符串来接收)表示。(注意:这个id号在一会需要更新版本的情况下,会写入本地偏好缓存)。

线上无任何需要更新的版本的情况下,文件对象就是空对象。只要产生了一次版本更新,以后版本更新接口则一定会有文件对象。

(2)从本地缓存读取历史写入的文件id,使用local_file_id表示。

        (a)  如果local_file_id不存在,且服务器返回的文件对象为空对象{},则host_file_id==null,则不需要进行任何下载。

        (b)  如果local_file_id不存在,且host_file_id有值,则需要下载。相当于是app安装后的第一个热更新版本。进入下载逻辑:downloadZIP(下面马上说明)。

      (c)如果local_file_id存在,说明之前热更新过版本,按上面提到的则host_file_id一定有值。现在我们需要判断本地和线上版本是否一致。判断标准非常简单粗暴,两个字符串是否相等。如果相等则版本一致(无需更新);如果不相等则版本不一致,进入下载逻辑:downloadZIP(下面马上说明)。

    (3)zip下载:

          (a)文件链接在o.data.url里面

          (b)下载到Caches/longyi目录。

          (c)服务器的文件名字都是一样的,好像每次都叫xxx.zip。保存到本地(需要使用多线程操作,避免卡顿)需要重命名。命名规则为host_file_id.zip. 结果下载的就是1.zip, 2.zip之类的。

    (4)zip解压:

            将刚刚下载的zip解压到当前目录(需要使用多线程操作,避免卡顿),如果当前host_file_id=1,则当前目录的文件有1.zip,还有一个名字为1的文件夹。

    (5)文件删除:

            随着版本的增多,文件和文件夹将会越来越多。我们需要遍历删除。

            (a)遍历Caches/longyi目录

            (b)删除一切zip

            (c)删除一切文件夹,除了以下文件夹:

                        (i) 刚刚下载的最新的zip解压的文件夹,名字为:host_file_id

                      (ii)当前正在运行的项目的文件夹,名字为:local_file_id

       (6)收尾工作:

                (a)下载zip并解压得到最新的项目文件夹,这个项目文件夹在当前项目运行生命周期内,并不生效。当前项目继续运行local_file_id项目或缺省项目。

                (b)将host_file_id存入偏好缓存。


   三、读取最新的项目:

   经过我们上面的步骤,我们得到了最新的项目。这个项目的路径读取,是在下一次app启动的时候读取。这个读取应该在app启动就计算得到,不应该在HybridWebviewActivity里面重复计算。下面是app启动计算Base_Url。

    (1)启动app。

    (2)获取本地偏好id即local_file_id。

            (a)local_file_id == null, 说明没有下载到本地的项目,Base_Url = 缺省包项目路径。

            (b)local_file_id != null,说明有下载到本地的项目,Base_Url = Caches/longyi/local_file_id/

    注意:此时不需要删除上次已经过期的local_file_id文件夹。因为下次有更新的时候,上面的代码会自动删除它。

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