我们通常把移动开发分为web、native和hybrid,但其实hybrid又可以细分的。最简单的是在native中放一个webview,然后加载一个兼容智能机的网站,其实就相当于在用户的手机上建立一个快捷方式,也算是占据用户桌面的应急用法吧。用这种方法要注意检测网络是否正常,不正常要给予提示,否则苹果是不予通过的。第二种是将web相关文件全部放在本地,数据库一般用sqlite做本地存储,用户就算不联网也能工作。第三种可能是以native为主,在某些特定的模块才会用到webview。
其实要我说,只有第二种才算是真正的hybrid,话说hybrid这个词可真难听,翻译过来的词是杂种、杂交,既然大家都这么用,我也就随了吧。很重要的一点是native和web有没有交互,没有的不算,你直接在webview中加载一个html页面,这算哪门子的hybrid开发,这种也谈不上什么技术含量了,没什么好讲的。你这种开发很难模拟native的体验嘛,用户一看就不对啊,我说的hybrid开发是那种多数用户看不出差别的。
之所以我要把hybrid开发的种类讲清楚,是因为它们遇到的白屏问题有所不同,有些白屏问题是可以通过技术解决的,有些是需要通过设计上去解决的,通常我们说的白屏有三种。
第一种是页面切换带来的白屏,就是你从index.html跳转到product.html会出现的白屏,嵌个webview就加载一个网站最容易出现这种问题。这个问题只能从设计上解决,技术上是无法解决的,或者解决起来比开发一个native程序成本还高。正确的做法应该是避免页面之间的跳转,将所有的内容放入到一个html中,通过css的display属性来切换view。
第二种是因为页面过长带来的白屏,在ios的webview中,如果页面内容过长,ios是不会一次渲染完成的,所以太长的时候,就会产生一种像phtoshop中那种透明背景的方格效果。这个问题最好的解决方法还是从设计上入手,避免这种过长的滚动。使用iscroll做滚动可以解决部分问题,但还是不能太长。
第三种白屏是启动的时候有讨厌的白屏,因为webview加载html并渲染有一定的时间,用户一打开你的app,webview还没有加载并渲染完比,白屏出现了。这种情况解决要用一些技巧,ios可以用两个view,一个view放上loading画面,另一个view加载html,当html加载完毕后,用javascript通知native,收到html加载完比后native代码负责切换view即可。
有人肯定要问,为什么不直接用objective-c代码写webview的onload事件?很简单,因为load完成可能还有很多事要做,而且一般要延时300毫秒再切换view才能保证白屏不出现。你可能要再问了,直接用延时不好么,为什么要这么麻烦?不同的机器性能不一,而且有些时候内存占得多加载可能就慢点,直接延时太死。
教你如何增加网站用户停留时间如何才能把外贸网站建设做好?在线教育怎么开发小程序?这三种方式供你选择SEO单页优化与软文推广有哪些好的方法针对咨询新闻网站创新运营的几点分析网站推广自然排名相对稳定之核心在“内容价值”B2B网站设计的3个技巧谈谈几个容易造成点击率高访问时间短的原因