HTML5+

  1. DCloud 5+API:https://www.dcloud.io/docs/api/index.html

  2. html5+ API: http://www.html5plus.org/doc/

  3. Native.js 示例汇总https://ask.dcloud.net.cn/article/114 《Native-js》

  4. 将坐标点转换为地理位置信息

    https://www.dcloud.io/docs/api/zh_cn/maps.html#plus.maps.Map.reverseGeocode

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // H5 plus事件处理
    function plusReady(){
    var point = new plus.maps.Point(116.347496,39.970191);
    plus.maps.Map.reverseGeocode(point,{},function(event){
    var address = event.address; // 转换后的地理位置
    var point = event.coord; // 转换后的坐标信息
    var coordType = event.coordType; // 转换后的坐标系类型
    alert("Address:"+address);
    },function(e){
    alert("Failed:"+JSON.stringify(e));
    });
    }

经验

  1. UI 调试在 PC 浏览器-移动模式下调试,先模拟数据,再真实数据
  2. 5+ 接口调试在真机环境下调试
  3. 测试版 App:应用名称和 apk 文件名都加上测试标识,例如:智慧执法测试版,zhsqapp_test.apk
  4. App 检测更新:先更新,再清除缓存,后重启App
  5. 不管打正式包还是测试包,注意核查 index.js 中服务端配置地址。正式包对应正式地址,测试包对应测试地址,切不可搞混
  6. 版本更新逻辑控制应放在服务器端:是否更新,更新 apk 还是 wgt等
  7. 做手机端开发,包括微信公众号、App等,调试时,想办法切换到在PC浏览器上,这样有助于提高调试效率
  8. 手机端后台接口中不要从 session 中获取值,这些值可能已经失效。可以从手机端传值到后端,也可以根据传的值「例如userid」等再次从数据库获取

离线打包

《5+App 离线打包指南.md》

云打包

  1. App 打更新包,只能更新静态资源,如果新增 5+ 模块或 SDK 权限等,则需要打新版本包,并让用户检测自动执行相应下载、更新或安装操作

  2. App 打包时记清楚 Android 包名是否使用自有证书,及相关证书文件、证书别名、证书私钥密码,在 unipush 配置中开通应用推送功能时,要填写正确。

    oW5pSI
cWbKLv

升级

https://ask.dcloud.net.cn/article/182

优化

  • 页面不缓存静态资源——login.html

    1
    <script src="../js/update.js" type="text/javascript" charset="utf-8"></script>
    1
    2
    3
    <meta http-equiv="expires" content="0">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
  • 页面回到前台时触发检查——main.html「体验不好」

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    document.addEventListener('resume', function() {
    // mui.toast("进入前台");
    var updateScript = document.getElementById('update');
    if(updateScript != undefined && updateScript != null) {
    document.head.removeChild(updateScript);
    }
    var update = document.createElement("script");
    update.id = 'update';
    update.type = 'text/javascript';
    update.src = '../js/update.js?' + Math.random();
    document.head.appendChild(update);
    }, false);

可改进的思路

  • 检测更新更好的模式应该是客户端提交本地应用资源版本号到升级服务器由升级服务器判断是否可更新并且返回 App 升级资源包下载地址,避免在客户端写资源下载地址
  • 更新时可以在后台静默下载下次启动是直接更新,避免更新时打断用户操作
  • 差量升级更新 App 资源,参考 App 资源在线差量升级更新

App store 应用更新说明

应用资源更新肯定是违反 apple 政策的,但目前看起来,如果你不是很大的公司,apple 不会理睬你。如果你是大公司,建议不要做整体更新,每次更新几个页面,也不要提示更新后需要重启,这样会安全点

自定义基座

官方:https://ask.dcloud.net.cn/article/35115

说明

  • 做一个运行基座,里面使用自定义的 manifest 配置,用来模拟正式环境下运行情况
  • 开发者打包了自定义运行基座,就可以把这个基座运行到手机 / Android 模拟器上,进行日志查看
  • 自定义调试基座是使用开发者申请的第三方 SDK 配置生成的基座应用,用于 HBuilder/HBuilderX 开发应用时实时在真机 / 模拟器上查看运行效果。(注:iOS 仅支持真机运行自定义基座,不能使用 xcode 模拟器运行自定义基座)
  • 注意:自定义调试基座仅供测试时使用,正式发版时需要按正常打包方式重新打包

步骤

  1. 在修改好 manifest 配置后,在 HBuilder/HBuilderX 中点击菜单栏 “运行”->“运行到手机或模拟器”->“制作自定义基座” 生成自定义基座安装包

  2. 打包成功后, 开启使用自定义调试基座运行

  3. 运行到设备或模拟器,此时使用的就是自定义基座

离线生成自定义调试基座

https://ask.dcloud.net.cn/article/35482

https://nativesupport.dcloud.net.cn/AppDocs/README

问题

  1. iOS 运行时提示:ITMS-90809:不推荐使用的API使用-不再接受使用UIWebView的新应用

    https://dev.dcloud.net.cn/mui/ajax/WKWebview 下,在 plus ready 后再调用 mui.ajax,同时注意也无法再使用浏览器的 xhr 及 jquery 的 ajax

    1
    2
    3
    4
    5
    6
    mui.plusReady(function(){
    ...
    mui.ajax({

    });
    })