请选择 进入手机版 | 继续访问电脑版
12下一页
返回列表 发新帖

APP更新总结(ios云修复)

[复制链接]
tcld2269 发表于 2016-3-10 16:57:10
本帖最后由 tcld2269 于 2016-3-10 17:11 编辑

之前做项目,关于APP的更新,走了不少弯路,也有好多细节需要注意和完善,现在总结一下,一来分享给大家,二来自己备忘。更新分两种方式,版本更新和云修复。版本更新就是把云编译后进行版本号的更新。云修复就是针对某个版本进行增量更新。

版本更新:
操作步骤:
  • 云编译
  • 在版本中输入编译后的路径,更新说明,然后进行更新。
注意事项:
  • 要想实现强制更新,必须是手机中的版本处于关闭状态,则会提示强制更新,所以把之前的版本更新记录全部关闭即可。
  • ios更新如果是已上线的,则路径必须输入appstore的路径,否则会出现提示更新,但是无法下载的情况。
  • 版本更新后必然会改变版本号,比如由1.0.0升级为1.1.0.所以适用于大更新,小更新则可以使用云修复。


云修复
操作步骤:
  • 在本地打好压缩包,以widget命名,zip格式。压缩包内的结构必须和项目一致。
  • 在云修复中,选择版本,然后针对某一版本实现修复。
  • 分为提示修复和静默修复,可根据情况自行选择。
注意事项:
  • 由于云修复是针对版本号进行修复的,所以当手机上的版本和云修复上的不一致的时候,是不会提示更新的。
  • 必须配置config文件中的smartupdate为true。


个人建议
1.0.0上线之后,小修改统一用云修复,当有改版或较大改动(增加模块,更换logo)的时候再进行版本更新,这样可以有效的控制好版本,易于后期的维护。
而云修复后,之前的修复记录可以删掉,云修复只会修复最新的一次。

遇到的情况
ios云修复需要手动关闭的情况
苹果云修复完后需要退出后生效。客户反映某些用户不会杀进程,需要解决,汗死。。
解决方案:在云修复中使用静默修复,然后在index页面添加强制退出的代码,用户更新完后提示强制退出。

  1. api.addEventListener({
  2.                                 name : 'smartupdatefinish'
  3.                         }, function(ret, err) {
  4.                                 var systemType = api.systemType;
  5.                                 if (systemType == "ios") {
  6.                                         var value = ret.value;
  7.                                         var extra = value[0];
  8.                                         api.alert({
  9.                                                 title : '系统已经更新完成',
  10.                                                 msg : '点击确定关闭程序,重新打开后更新生效。',
  11.                                                 buttons : ['确定']
  12.                                         }, function(ret, err) {
  13.                                                 if (ret.buttonIndex == "1") {
  14.                                                         api.closeWidget({
  15.                                                                 id : 'A6994197760718', //这里改成自己的应用ID
  16.                                                                 retData : {
  17.                                                                         name : 'closeWidget'
  18.                                                                 },
  19.                                                                 silent : true
  20.                                                         });
  21.                                                 } else {
  22.                                                 }
  23.                                         });
  24.                                 }
  25.                         });
复制代码


添加手动更新的方法

一般在我的或设置里面放上版本更新的按钮,显示版本号,然后点击进行手动更新。
注意:此功能提交appstore是会被驳回的,苹果不允许用户自己内部更新
  1. function checkVerson() {
  2.                         var mam = api.require('mam');
  3.                         mam.checkUpdate(function(ret, err) {
  4.                                 if (ret) {
  5.                                         var result = ret.result;
  6.                                         if (result) {
  7.                                                 if (result.update) {
  8.                                                         api.confirm({
  9.                                                                 title : '发现新版本' + result.version + '是否更新?',
  10.                                                                 msg : result.versionDes,
  11.                                                                 buttons : ['更新', '取消']
  12.                                                         }, function(ret, err) {
  13.                                                                 if (ret.buttonIndex == "1") {
  14.                                                                         //点击更新
  15.                                                                         var url = result.source;
  16.                                                                         api.download({
  17.                                                                                 url : url,
  18.                                                                                 report : true
  19.                                                                         }, function(ret, err) {
  20.                                                                                 if (ret && 0 == ret.state) {/* 下载进度 */
  21.                                                                                         api.toast({
  22.                                                                                                 msg : "正在下载应用" + ret.percent + "%",
  23.                                                                                                 duration : 2000
  24.                                                                                         });
  25.                                                                                 }
  26.                                                                                 if (ret && 1 == ret.state) {/* 下载完成 */
  27.                                                                                         var savePath = ret.savePath;
  28.                                                                                         api.installApp({
  29.                                                                                                 appUri : savePath
  30.                                                                                         });
  31.                                                                                 }
  32.                                                                         });
  33.                                                                 } else {
  34.                                                                         alert('您取消了本次更新')
  35.                                                                 }
  36.                                                         });
  37.                                                 } else {
  38.                                                         api.toast({
  39.                                                                 msg : '当前版本是最新版本!',
  40.                                                                 location : 'middle'
  41.                                                         });
  42.                                                 }
  43.                                         }
  44.                                 } else {
  45.                                         api.alert({
  46.                                                 msg : err.msg
  47.                                         });
  48.                                 }
  49.                         });
  50.                 }
复制代码









15条回复

周枫 业余车手 18312Y币
很好,收了~~
搜农 新手上路 192Y币
很好,论坛有没有收藏功能啊
nidouwowan 驾校小白 131Y币
谢谢总结


alexsong 新手上路 2413Y币
学习了 谢谢分享
wenjie.chen 新手上路 57Y币
云修复必须使用真机吗
tcld2269 新手上路 440Y币
wenjie.chen 发表于 2016-3-16 09:22
云修复必须使用真机吗

没看懂,描述的详细一点。
wenjie.chen 新手上路 57Y币
我在原生App上使用superwebView加载widget的H5。现在想使用云修复更新H5,这种混合app可以实现吗,按教程走,没看到任何更新效果呀。
tcld2269 新手上路 440Y币
wenjie.chen 发表于 2016-3-16 09:44
我在原生App上使用superwebView加载widget的H5。现在想使用云修复更新H5,这种混合app可以实现吗,按教程走 ...

这种情况我也不确定能不能实现,需要咨询一下官方的人员。
coolwin 新手上路 84Y币
云修复问题留用
12下一页
您需要登录后才可以回帖 登录

本版积分规则