简介

热更新系统在后台有一套完整的版本管理系统,会对每一个版本进行差分补丁操作。同时会生成不同版本之间的补丁文件,而这些补丁文件需要提供给手机端下载。 我们针对客户需要使用自己内部CDN的情况,开放了对外的CDN上传接口,客户只需要按照协议开发对应的HTTP接口,并在apkplug后台配置上,热更新系统就可以在完成补丁文件以后将补丁文件上传客户CDN中,最终实现手机端直接从客户自己的CDN下载补丁文件。

步骤

  1. 联系商务,开通自定义CDN配置
  2. 客户按协议开发补丁文件接收HTTP接口
  3. 在apkplug后台配置HTTP接口
  4. 完成配置
  5. 热更新系统在制作完补丁时会将补丁文件信息提交HTTP接口

注意事项

  1. 客户需要保证自身CDN的稳定性,一旦热更新后台成功将补丁文件上传客户CDN服务器,以后手机端更新补丁都将从客户CDN下载。
  2. 请保证HTTP接口稳定,如果热更新系统上传补丁文件时出现以下问题都会再次使用apkplug自身的CDN
  3. HTTP接口不可用
  4. HTTP接口返回数据不正确
  5. HTTP接口提供的补丁下载地址不可用
  6. 客户CDN下载的补丁文件md5值不正确

CDN配置

配置界面在apkplug后台 【用户中心】-->【CDN配置

签名所需要的通讯密钥 secret_key 也可以从该页面获取

API

    URL路径:
        开发者设定 cdn_upload_uri
    method:
        POST
    操作权限:
        secret_key 通信
    传入参数:
        @update_uri    #要上传的文件URI,保存在阿里云上,提供给客户下载到其CDN中
        @md5           #文件MD5
        @size          #文件大小
        @extra[source]        #文件来源 hotpacker [可选额外信息]
        @_time
        @sign_type  #签名方案 secret | private
        @sign  见签名方案
    返回参数:
        ```
        {
           "err_detail": null, 
           "return_code": "SUCCESS|FAIL", 
           "return_msg": {
                "cdn_uri": "客户返回的cdn文件下载地址",
            }
       }
        ```

    URL路径:
        开发者设定 cdn_upload_uri
    method:
        GET  用于测试
    操作权限:
        secret_key 通信
    传入参数:
        @extra[source]        #test
        @_time
        @sign_type  #签名方案 secret | private
        @sign  见签名方案
    返回参数:
        ```
        {
           "err_detail": "", 
           "return_code": "SUCCESS|FAIL", 
           "return_msg": "success"
        }
        ```
    只有状态码 200 且 return_code=SUCCESS 才被认为是可以正常通讯

签名方案

为保证数据安全,API加入了签名认证

urlsafe_Base64(sha1(所有参数eascii升序排序,拼接字段之间用&分割+&secret_key=xxx))

eg: _time=1469241923.98&access_id=acc_1RRnBKYnvhu&app_id=app_1RRoNHE9egM&channel_id=&set_current=&sign_type=secret&secret_key=u8JjE42rKISXLTiFWOwofYmzlhBNetM9

签名代码片段: 参数排序: l=[("%s=%s"%(key, (args[key] if args[key]!=None else ""))) for key in args.keys() if key !="sign"] l.sort() s='&'.join(l) s="%s&secret_key=%s"%(s,"XXX") #unicode 转 utf-8 否则可能签名不正确 s=str(s)

使用url安全的Base64编码