随着H5标准的发布,移动应用开发有了更多的选择。只是简单的本地开发。今天,我就简单总结一下移动应用开发的三大类型。一、WebApp、HybridApp、NativeApp简介WebAppWebApp是指用前端语言编写的可以在多个平台上使用的应用程序。它运行在手机或者浏览器上,对手机的性能要求比较高。受限于手机的webView,页面一般存放在服务器上。更新方便,更新无需通知用户,无需手动升级。开发成本低,维护简单。体验差,用户留存率低。网络依赖性强。HybridAppHybridApp是指用原生语言和前端语言编写的只能在iOS和Android平台上使用的应用程序,但其整体特性更接近于NativeApp。前端JS调用原生提供的JSAPI实现功能。更新比较容易,大部分需求不能自动更新。中控可以在不通知用户的情况下实现更新,无需手动升级。开发成本低,维护简单。限于手机的webView。仍然受到技术和互联网速度的限制。体验好,用户留存率高。NativeAppNativeApp是指基于iOS、Android等手机操作系统,使用原生程序编写,运行在手机上的应用程序。常用语言iOS:Objective-CswiftAndroid:JAVA开发成本高,需要两端开发人员,维护成本高。更新难度大,需要上传到应用市场,需要手动升级。用户体验好,留存率高。性能稳定,响应速度快。2、WebApp、HybridApp、NativeApp与原生WebApp交互:h5与WKWebView交互例如:WKWebView加载html链接显示页面:oc中的WKWebView实现//和前端协议统一标识:nameIDWKWebViewConfiguration*config=[[WKWebViewConfigurationalloc]init];WKUserContentController*wkUController=[[WKUserContentControlleralloc]init];[wkUControlleraddScriptMessageHandler:selfname:@"nameID"];config.userContentController=wkUController;//创建WKWebViewself.webView=[[WKWebViewalloc]initWithFrame:CGRectMake(0,0,ScreenWidth,ScreenHeight)configuration:config];self.webView.navigationDelegate=self;[self.viewaddSubview:self.webView];//loadurlNSURL*baseUrl=[NSURLURLWithString:self.url];NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:baseUrl];[_webViewloadRequest:request];#pragmamark--WKScriptMessageHandler-(void)userContentController:(WKUserContentController*)userContentControllerdidReceiveScriptMessage:(WKScriptMessage*)message{//判断是nameIDif([message.nameisEqualToString:@"nameID"]){//编写点击按钮的执行方法}}在HTML中的按钮点击事件中实现:functionjsFunction(){window.webkit.messageHandlers.nameID.postMessage({});}HybridApp:选择一个第三方框架,根据JSAPI接口调用,例如:ZKEZ,根据插件文档使用JSAPI接口。例如:在ZKEZ中创建应用,添加插件,参考插件API接口参考,这里以AppInfo插件为例:示例代码:复制示例代码,写在调用的前端按钮事件中:functiongetAppInfo(){//getapp相关信息navigator.appInfo.getInfo(function(result){alert(JSON.stringify(result));},function(error){alert(error);});}NativeApp:使用oc编码。例如:UIButton*senBtn=[UIButtonbuttonWithType:UIButtonTypeCustom];senBtn.frame=CGRectMake(0,0,100,100);[senBtnaddTarget:selfaction:@selector(senClick)forControlEvents:UIControlEventTouchUpInside];[self.viewaddSubview:senBtn];-(void)senClick{//编写按钮点击方法}下一节将介绍WebAPP或HybridApp自动更新(热更新)
