2

我正在使用 Phonegap、HTML5 和 Web 服务创建一个移动应用程序。这将针对 Android 和 iOS(Ipad 和 Iphone)设备。

我需要使用什么方法对移动应用程序和服务进行版本控制?如果应用程序和 Web 服务都从 1.0 版本开始,

  1. 我应该同时为它们两个都提供新版本吗?
  2. 如果用户忽略了新版本并且不进行更新,我是否需要维护旧版本的服务?
  3. 如果 (2) 是,我会将旧版本保留多长时间?
  4. 有没有办法强制用户进行应用升级?

任何帮助表示赞赏。

4

4 回答 4

3

1) 服务器和应用程序版本不必相同。事实上,它们应该独立发展。Semver提供了关于何时增加版本号的良好指南。

2、3)。理想情况下,您应该以能够优雅地处理旧版本的方式设计服务。但是,如果您真的必须弃用某些功能,那么您是唯一可以决定何时这样做的人。

4) 您可以拒绝旧客户端与您的服务器交互,但向客户端提供一个有意义的错误消息,指示用户升级。

于 2013-06-12T17:37:38.383 回答
1

1)我应该同时为它们两个都提供新版本吗?

不,每个平台都应该有自己的版本号。如果您的错误仅发生在 iOS 上怎么办?你也会升级安卓版本吗?听起来不太好。我发现非常有用的是保留一个简单的日期图表,其中包含每个版本和每个平台的项目符号点更改。

2)如果用户忽略了一个新版本并且不做更新,我是否需要维护旧版本的服务?

您应该提前计划并避免“重大更改”,因此如果用户使用的是旧版本,它仍然可以工作。有时你无法避免它,你需要弃用一些东西,但你应该保留它们。

3) 如果 (2) 是,我会将旧版本保留多长时间?

如果您绝对有重大更改,请保留旧版本,直到您确定大多数用户在删除它时不会受到影响。一遍又一遍地警告他们,他们正在使用的版本将很快停止工作,他们应该进行升级。

4)有没有办法强制用户进行应用升级?

在您的 api 调用中发送客户端版本号,然后您可以根据该号码做任何您喜欢的事情。您可以发回一条消息,告诉用户他们不能继续前进,除非他们更新,例如。

于 2013-06-13T15:08:54.487 回答
0

除了包含一个 JS 文件来检查您自己的服务器上的某些内容以查看是否有可用更新(例如检查某种类型的清单文件)之外,这并不是强制用户升级的真正方法

我个人的经验是在两个平台上保持尽可能多的代码相同,这样您就不必为这两个平台编写代码。而且你永远不会摆脱在野外拥有旧版本。但我通常会在 12 个月后停止支持旧版本。

于 2013-05-09T04:17:36.693 回答
0

您可以简单地创建一个HTML5 应用程序缓存

使用应用程序缓存,您的应用程序也可以离线访问,并且能够轻松创建新更新并强制用户更新(如果他们在线)。

如果使用此方法,则应在两个平台上保持版本号一致。您将能够通过此方法强制更新,因此无需维护旧版本的用户。要回答#3,我认为这取决于您分析您的用户群并得出结论。

在应用缓存中,所有资产都必须加载,否则将失败,因此请注意您在缓存清单中声明的​​内容。我建议只列出静态资产。

了解有关 HTML 应用程序缓存的更多信息:http : //www.html5rocks.com/en/tutorials/appcache/beginner/

此解决方案位于前端,因此您必须使用 JavaScript 来管理版本和应用程序缓存。

为了在 JS 中检测应用程序的新版本,下面的代码块将检测用户何时加载您的应用程序:

window.addEventListener('load', function(e) {//NOTICE this only fires on page load, you can put this in a setInterval, if you'd like
  if (window.applicationCache) {  //Application cache is supported
    window.applicationCache.addEventListener('updateready', function(e) {  
        //Listening for an updated cache 
        if (window.applicationCache.status == window.applicationCache.UPDATEREADY)    {  
          window.applicationCache.swapCache();    
          if (confirm('A new version of this site is available. Load it?')) { 
            //If user accepts new version of site, it will reload the site.  
            window.location.reload();   
          }
        } else {    
          return;    
        }    
    }, false);    
  }    
}, false);

它只会询问用户是否愿意加载网站的新版本,但是由于您想强制更新用户,您可以将其修改为如下所示:

window.addEventListener('load', function(e) {//NOTICE this only fires on page load, you can put this in a setInterval, if you'd like
  if (window.applicationCache) {  //Application cache is supported
    window.applicationCache.addEventListener('updateready', function(e) {  
        //Listening for an updated cache 
        if (window.applicationCache.status == window.applicationCache.UPDATEREADY)    {  
          window.applicationCache.swapCache();    

            //Force update a user when a new version becomes available
            window.location.reload();   

    }, false);    
  }    
}, false);

应用程序缓存清单中的任何更改都将创建应用程序的新版本,例如,如果您的清单如下所示:

CACHE MANIFEST
#Version 1.0

game.html
assets/css/style.css

NETWORK
*

...然后您将其更改为:

CACHE MANIFEST
#Version 1.0
#I love cupcakes and candy

game.html
assets/css/style.css

NETWORK
*

您将自动创建应用程序的新版本。

据我所知,这将是解决您的问题的一个很好的解决方案,但是我确实听说要让它在 Android 上运行还有一些工作要做(下面的链接)。

PhoneGap 应用缓存教程:http ://tmkmobile.wordpress.com/2012/03/04/html5-offline-solution/

于 2013-06-12T20:59:32.637 回答