打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释

为什么要做这个看起来不靠谱的东西呢?

由于刚学android开发,还不能非常好的熟练控制android界面的编辑和操作,所以我的一个急着要的运用就改为html5版本号了,反正这个运用也是须要从server获取大量数据来展示在手机上面的,也就是说:必须联网,才干正常工作,于是想了一下,反正都要联网获取数据,为什么不直接用我相对熟悉一点的 html来做这个运用呢?省的花费不够用的时间去学习android界面的控制,于是就简单了:用蹩脚的手段做了一个android程序的启动欢迎界面,内页就是一个全屏的webview,启动后就连上IISserver获取网页展示,就能够了。

但是话说回来,这样不如直接写一个手机版网页网站,用手机内建浏览器打开看即可了嘛,为什么还得大费周章弄APP呢?由于......这个APP还要有通知栏提醒功能,执行一个后台服务获取server上提供的预警等信息,所以光网页版是不够的,于是就生出了这个怪异的APP。

做好的app放在server上,本来图省事,apk文件压缩成zip包,给客户下载,结果......无语的是,好多客户手机上没有解压软件,并且还不会自己下载安装解压软件,没辦法,仅仅好把iis加上支持apk下载的功能了,之前试过IIS默认安装后,IIS是不支持apk文件下载的,还好资料好查,加入个apk下载支持也超简单,就顺手弄了。

另外,考虑到网页版运用消耗流量肯定非常大,为了节省流量,就顺手引入了html5的缓存功能,可是这个功能中的一个重要文件:缓存列表 文件,貌似用直接用txt做扩展名的不行。非得用那个默认的扩展名(不知道其它扩展名行不行,可是貌似都得设置那个扩展名的MIME类型才干够),这个扩展名的支持也是IIS默认没有的,也要手工加入,还好都不算复杂。

可是网上都没有找到图片实例,于是手闲之余,顺便做个记录,就抓了个简单的图,奉上,这才有了这篇文章。

例如以下图:

打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释

apk下载支持:

扩展名: .apk

MIME类型:application/vnd.android.package-archive


html5缓存支持

扩展名: .manifest

MIME类型:text/cache-manifest


apk下载支持没什么好说的了,直接把apk文件扔到server即可,以下简单说下html5缓存的一些注意要点:

1.html5可被缓存的样例:

c.html

<!DOCTYPE html>
<html manifest="./mymanifest.manifest">
<body>
<script type="text/javascript" src="./js/demo_time.js">
</script>
<p id="timePara"><button onclick="getDateTime()">获得日期和事件</button></p>
<p><img src="./i/w3school_banner.gif" /></p>
<p>请打开<a href="./html5_html_manifest.html" target="_blank">这个页面</a>,然后脱机浏览,又一次载入页面。页面中的脚本和图像依旧可用。</p>
</body>
</html>

偷了个懒,直接用w3school的样例来弄了: http://www.w3school.com.cn/example/html5/html5_html_manifest.html

它这个样例不知道怎么的,貌似它IIS没设置还是怎么,反正我測试缓存是失敗的。

上面文件里引用到的文件有:

./mymanifest.manifest

./js/demo_time.js

./i/w3school_banner.gif

为了測试 FALLBACK: 所以有益没有放 ./html5_html_manifest.html 在server上。依照以上弄好html主文件后,以下就是编写缓存列表文件:

2.缓存列表文件编写

CACHE MANIFEST
# 2014-05-22 v1.0.0
CACHE:
./i/w3school_banner.gif
./js/demo_time.js


NETWORK:
login.asp


FALLBACK:
/ ./err/404.html

上面就是一个完整的缓存列表文件的样例,能够看到没增加 ./html5_html_manifest.html ,为了測试最后一个FALLBACK的效果,前面几个标签没什么好说的,网络上样例和说明一大把,着重说下最后一个失效时回调的页面设置,这里一行为一个单位,一行有两个元素,第一个是网络正常或文件存在时调用的页面,后跟一个空格和第一个元素隔开,第二和元素就是网络不通,或者文件不存在是的替换页面,上面的样例中,第一个元素用 / 符号取代,表示全部未找到或网络未连接时无法訪问的文件都用后面这个文件 ./err/404.html 替换显示。/ 在这里是通配符的作用,类似 * 。


3.webview设置

当然,假设你的浏览器本身支持缓存的话,那么这里以下的内容你就不必看了,上面设置完成后,你的页面就能够被顺利缓存了。

可是我打造的是自己引用webview做的APP,默认缓存是关闭的,那么就必须对webview进行设置,否则照样不能缓存:这里仅仅给出webview设置的代码片段了,具体的调用webview的样例网上一大把,在此不做冗述。

   	  WebSettings  webseting  =  mWebView.getSettings();   

          webseting.setJavaScriptEnabled(true);  //js支持
          webseting.setSupportZoom(true);  
          webseting.setDefaultTextEncodingName("gb2312"); //默认代码页
          mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);  //滚动栏
          mWebView.requestFocus();  
        //以下为缓存开启和设置的部分。
          webseting.setDomStorageEnabled(true);    /*假设须要存储一些简单的用key/value对就可以解决的数据,DOM Storage是很完美的方案。
           * 依据作用范围的不同,有Session Storage和Local Storage两种,
           * 分别用于会话级别的存储(页面关闭即消失)和本地化存储(除非主动删除,否则数据永远不会过期)。 
*/
          webseting.setAppCacheMaxSize(1024*1024*8);//设置缓冲大小,我设的是8M 
          String  appCacheDir  =  this .getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();       //设置缓存路径
                  webseting.setAppCachePath(appCacheDir); //设置缓存路径 
                  webseting.setAllowFileAccess(true);   //设置能够訪问文件读取文件
                  webseting.setAppCacheEnabled(true);   // 开启APP缓存 
                  webseting.setCacheMode(WebSettings.LOAD_DEFAULTWebSettings.LOAD_CACHE_ELSE_NETWORK); //设置缓存模式为:依据html5缓存列表文件更新缓存和在网络未连接时使用缓存。

完毕以上4步(IIS设置算一步),你的APP才干正确的缓存网页。
更多相关文章
  • 原文:IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置站点--右键属性--http头 扩展名  mime类型.apk      application/vnd.android.packa ...
  • 


    		    如何讓windows伺服器IIS支持.apk/.ipa文件下載
    让Windows服务器中IIS支持 .apk .ipa文件下载 有位做APP开发的客户网站需要为用户提供网络下载安装,网站的搭载环境是Windows+IIS.而在默认的情况下,IIS是无法通过网络上来直接下载安卓.apk和苹果.ipa文件的,现哈尔滨网站建设分享给大家解决辦法以及原因. 因为IIS的 ...
  • 服务器iis支持.apk文件下载的设置 IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. IIS服务器不能下载.apk文件的解决辦法:既然.apk无法下载是因为没有M
  • 默认把安卓手机应用或游戏的apk格式文件上传到服务器空间是不能直接下载的,这是因为IIS的默认MIME类型中没有.apk文件,所以无法下载.@VCOO 既然.apk无法下载是因为没有MIME,那么添加一个MIME类型就可以了. 让IIS支持.apk文件下载的方法: [IIS6] 1)打开IIS服务管
  • Android APP(APK),在AndroidManifest.xml常用权限 android.permission.ACCESS_CHECKIN_PROPERTIES//允许读写访问”properties”表在checkin数据库中,改值可以修改上传android.permission.ACC
  • 其实要apache支持中文,只要在<Directory />标签里添加一下列就可以了: IndexOptions Charset=utf-8 意思是把浏览器的字符编码设置成UTF-8,改成你自己服务器的编码就可以了, 但是如果服务器有其他编码的话,网站打开可能会有点乱,所以慎用. 以下是 ...
  • [IIS6] 1)打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 2)单击MIME类型下的“MIME类型”按钮,打开MIME类型设置窗口: 3)单击“新建”,建立新的MIME类型: 4)扩展名中填
  • 在web.xml文件中加入 <mime-mapping> <extension>manifest</extension> <mime-type>text/cache-manifest</mime-type> </mime-mappin ...
一周排行
  • monkey是用来测试的,在android应用程序中,想测试一下,可以用cmd ,adb shell   之后,进行monkey  点击次数的设置.
  • 今日写一段测试代码,实现的功能是,当一个输入框获得焦点时,某个幫助窗体跟随在其下方显示.代码很简单,本来没有什么值得一提的.但实验的时候发现,有些控件能较好地跟随,但有些不能,而且距离十分远. 主要代码如下(跟随窗体
  • 


    		    從任何兼容 TWAIN 的設備獲取圖象的控件Dynamic Web TWAIN
    Dynamic Web TWAIN 使得你可以从任何兼容 TWAIN 的设备获取图象,并且
  • 这是一个采用 .NET Enterprise Application Server 技术的端到端示例应用程序.应用程序代码可以从 这里 下载. 代码中演示了WCF服务和移动开发,包括用Xamarin Android和
  • 最近有一个项目用到STM32,为了使PCB布线方便一些所以改了一些引脚,占用了JTAG接口的PA15和PB3,所以要禁用一下JTAG,下载采用SWD模式.这样在实际操作中做出一些总结(方法网上都有.这里只是总结记录一 ...
  • QoS的英文全称为"Quality of Service",中文名为"服务质量".QoS是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 在正常情况下,如果网 ...
  • SQL Server Data Tools(SSDT) 安裝
    SQL Server Data Tools(SSDT) 曾叫做Business Intel
  • #lang racket (define (length items) (if (null? items) 0 (+ 1 (length (cdr items))))) (define (element-of-set
  • 


    		    Kibana+Logstash+Elasticsearch+Redis安裝部署
    最近做日志分析,发现logstash较符合自己的需求, Logstash:做系统log收集 ...
  • Css3  javascript 寫的分類
    不兼容IE10以下的浏览器 <!DOCTYPE html> <html& ...