.net HTML5移动应用程序的版本控制方法

.net HTML5移动应用程序的版本控制方法,.net,html,mobile,cordova,versioning,.net,Html,Mobile,Cordova,Versioning,我正在使用Phonegap、HTML5和web服务创建一个移动应用程序。这将针对Android和iOS(Ipad和Iphone)设备 我需要使用什么方法来对移动应用程序和服务进行版本控制?如果应用程序和web服务都以1.0版启动 我应该同时为这两个版本提供新版本吗 如果用户忽略了新版本而不进行更新,我是否需要维护旧版本的服务 如果(2)是,我将保留旧版本多久 有没有办法强迫用户升级应用程序 非常感谢您的帮助。这并不是强迫用户升级其他版本,而是包括一个JS文件,用于检查您自己的服务器上是否有可用的

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

我需要使用什么方法来对移动应用程序和服务进行版本控制?如果应用程序和web服务都以1.0版启动

  • 我应该同时为这两个版本提供新版本吗
  • 如果用户忽略了新版本而不进行更新,我是否需要维护旧版本的服务
  • 如果(2)是,我将保留旧版本多久
  • 有没有办法强迫用户升级应用程序

  • 非常感谢您的帮助。

    这并不是强迫用户升级其他版本,而是包括一个JS文件,用于检查您自己的服务器上是否有可用的更新(例如检查某种类型的清单文件)


    我个人的经验是,在两个平台上保持尽可能多的代码相同,这样就不必同时为这两个平台编写代码。而且你永远也无法摆脱在野外的遗留版本。但我通常在12个月后就不再支持旧版本了

    这并不是强迫用户升级其他文件,然后包括一个JS文件来检查您自己的服务器上是否有可用的更新(比如检查某种类型的清单文件)

    我个人的经验是,在两个平台上保持尽可能多的代码相同,这样就不必同时为这两个平台编写代码。而且你永远也无法摆脱在野外的遗留版本。但我通常在12个月后就不再支持旧版本了

    1)服务器和应用程序版本不必相同。事实上,它们应该独立发展。提供了一个很好的指导原则,说明了何时增加版本号

    2,3)。理想情况下,您应该以这样一种方式设计服务,使其能够优雅地处理旧版本。但是,如果你真的不得不反对某些功能,你是唯一可以决定何时这样做的人

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

    1)服务器和应用程序版本不必相同。事实上,它们应该独立发展。提供了一个很好的指导原则,说明了何时增加版本号

    2,3)。理想情况下,您应该以这样一种方式设计服务,使其能够优雅地处理旧版本。但是,如果你真的不得不反对某些功能,你是唯一可以决定何时这样做的人

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

    您只需创建HTML5应用程序缓存即可。 有了应用程序缓存,你的应用程序也可以离线访问,并且可以轻松创建新的更新并强制用户更新(如果他们在线的话)

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

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

    了解有关HTML应用程序缓存的更多信息:

    此解决方案位于前端,因此您必须使用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应用程序缓存教程:

    您只需创建一个HTML5应用程序缓存即可。 有了应用程序缓存,你的应用程序也可以离线访问,并且可以轻松创建新的更新并强制用户更新(如果他们在线的话)

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

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

    了解有关HTML应用程序缓存的更多信息:

    此解决方案位于前端,因此您必须使用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
    *
    
    您将自动创建应用程序的新版本

    据我所知,这将是解决您问题的一个很好的解决方案,但我确实听说还有一些工作要做