精华内容
下载资源
问答
  • 最近采用原生控件+前端技术开发Android、iOS客户端的方式很流行,其实这种技术...原生控件和前端技术结合的实现方式有两种: 1、前端静态资源在客户端 将静态文件(html、js、css、图片等)放在assets目录下,...
    最近采用原生控件+前端技术开发Android、iOS客户端的方式很流行,其实这种技术方案出现很久了;后来随着html5的发布,采用前端技术也可以渲染出炫丽的视觉界面,这种方案就更加流行起来;另外,复用性高,节约成本,也是其得以流行的原因之一。

    原生控件和前端技术结合的实现方式有两种:

    1、前端静态资源在客户端
    将静态文件(html、js、css、图片等)放在assets目录下,用下面方法将WebView和html文件绑定:

    //Android实现:
    public WebView initWebView(WebView webView){
    android.view.ViewGroup.LayoutParams layoutParams = new LayoutParams(
    android.view.ViewGroup.LayoutParams.FILL_PARENT,
    android.view.ViewGroup.LayoutParams.FILL_PARENT);
    webView.setLayoutParams(layoutParams);

    WebSettings webSettings = webView.getSettings();
    webSettings.setRenderPriority(RenderPriority.HIGH);
    //java script
    webSettings.setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    // access Assets and resources
    webSettings.setAllowFileAccess(true);
    webSettings.setAppCacheEnabled(false);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);//隐藏滚动条

    webView.loadUrl("file:///android_asset/XXX.html");
    }

    //iOS实现:
    NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
    NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [myWebView loadHTMLString:html baseURL:baseURL];

    到此,你可以启动你的程序了,正常情况下XXX.html页面会显示在你的手机上。

    这种方式让你可以用前端技术代替原生控件实现界面效果;
    另外,如果你的应用需要服务端数据,这种方式可以提高应用程序响应速度,特别是在带宽有限(如:2G/3G网络)的情况下比较明显;因为很多静态文件已经在本地了,不需要在程序运行时从服务端下载。

    2、前端静态资源在服务端
    直接用webview加载一个链接就可以了:
    //Android实现:
    webView.loadUrl("http://ringw.iteye.com/blog/2072310");

    //iOS实现:
    NSURL* url = [NSURL URLWithString:@"http://ringw.iteye.com/blog/2072310"];//创建URL
    NSURLRequest* request = [NSURLRequest requestWithURL:url]; //创建NSURLRequest
    [myWebView loadRequest:request];

    这种方式简单易懂;更新升级方便。

    -----------

    对于第一种方式,我发现如果页面上有ajax请求,在iOS上或者android的targetSdkVersion设置为17及以上时,会出现[color=red]ajax跨域问题[/color],目前还没找到解决方法,[color=red]欢迎一起讨论[/color]
    展开全文
  • 因为工作是移动端混合开发,需要原生与h5交互。 目前接触过的两种方法: 1. 大多数是直接通过webview代理,理解的是通过拦截调用与原生进行交互。任意版本都支持。... UIWebView 中 OC JS 交互(ios) 注...

    因为工作是移动端混合开发,需要原生与h5交互。
    目前接触过的两种方法:

    1. 大多数是直接通过webview代理,理解的是通过拦截调用与原生进行交互。任意版本都支持。
    2. 使用第三方库WebViewJavaScriptBridge。

    这里主要整理下WebViewJavaScriptBridge在前端部分的使用:
    【用于 WKWebView & UIWebView 中 OC 和 JS 交互(ios)】

    注册监听事件(固定代码):

    /*这段代码是固定的,必须要放到js中*/
    function setupWebViewJavascriptBridge(callback) {
    	if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
    	if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
    	window.WVJBCallbacks = [callback];
    	var WVJBIframe = document.createElement('iframe');
    	WVJBIframe.style.display = 'none';
    	WVJBIframe.src = 'https://__bridge_loaded__';
    	document.documentElement.appendChild(WVJBIframe);
    	setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
    }
    

    js与原生方法调用部分

    //添加原生调起js方法
    setupWebViewJavascriptBridge(function(bridge) {
         /* Initialize your app here */
         //所有与iOS交互的JS代码放这里!
    
        //js注册方法让原生调起(原生调用js)
        
        //name: 和原生约定的调用方法名
        //function(data,callback):调用方法的具体内容,data为原生传过来的参数,callback为js给原生的回调函数             
        bridge.registerHandler("jsFunction",function(data,responseCallback){
            alert("do sth with"+data)
            responseCallback("js calls back to oc");
        });
        
        
        //js唤起原生注册的方法(js调用原生)
        
        //name: 和原生约定的调用方法名
        //data: 向原生传递的参数
        //function: 原生调用后的回调函数(回调结果处理)
        bridge.callHandler('ocFunction',data,function(res){
             alert("js has received the result:"+res);
        });
    }
    

    备注:

    1. 传送的数据格式,ios端可以是JSon对象,android端是string
    2. setupWebViewJavascriptBridge方法使用即执行(原生初始化页面时即调起)
    3. 完整(ios+Android部分):https://www.jianshu.com/p/e37ccf32cb5b
    展开全文
  • vuereact只是一个view层的框架,不知道为何Web前端发明出这么多框架。 也不是很能理解,直接用JS操纵DOM原生感觉也是挺好的,Web在低浏览器适配很难受,才有jquery,不过随着版本升级环境越来越好了,我是不太想用...

    vue和react只是一个view层的框架,不知道为何Web前端发明出这么多框架。 也不是很能理解,直接用JS操纵DOM原生感觉也是挺好的,Web在低浏览器适配很难受,才有jquery,不过随着版本升级环境越来越好了,我是不太想用jquery去写网站,90K多的一个库,宁可自己优化- -。(可以借助webpack模块压缩,但是配置也挺蛋疼)

    本身我有iOS开发的经验,总结发现:入门iOS虽然学习曲线比Web难,但是开发效率要比Web高,运行效率也高,但是不是跨平台。所以我才从重iOS往Web看一看,发现Web简直是开发过度啊。这个框架那个框架,还有那个js无奈的语法,话又说回来。js还能捣鼓Node服务器,这点是我喜欢js的一个优点把。

    虽然苹果开源新语言Swift,也可以写服务器,但是生态还是没有建立起来,基本不可以投入生产环境,不如Node。

    个人观点:Swift语法要比JavaScript优雅的多,二者语法也很相似,var let 都有。

    但是JavaScript生态圈v587,看看gitHub start吓死宝宝了,人多力量大。 语法也一点一点优雅起来比如: ES6。

    现在Web要前后端分离, 另外iOS和Android本身都是分离的,通过json交换数据。而Web前后端要分离,可以获取请求数据json操作DOM,也可以前后分离,这里就牵扯是在浏览器渲染还是服务器渲染,浏览器渲染就没有SEO,也是挺难过的一件事。如果浏览器渲染,前端就不需要太了解服务器的东西。 要是在服务器渲染,就需要一些服务器知识了。

    还有我最想吐槽的webpack各种配置刚开始吓死我了,就一个简单的React的页面,要配置的东西还有各种概念理解,还有各种Atom编辑器的各种配置,还有要搭建到阿里云服务器上,一堆配置,还要起一个Node服务器(这个我最喜欢了)。

    iOS开发真省心 Xcode最新版本, 直接开启撸。 不过也有第三方pod包管理和Npm一样简单。但是iOS有个巨蛋疼的苹果审核,随便拒绝你一下,两星期才能上架一个版本。

    好了就吐槽到这里,也就是说出来散散心而已, 吐槽本质改不了什么,只能改变自己用工具解决问题了。

    个人博客: www.liangtongzhuo.com

    转载于:https://juejin.im/post/5a31f1876fb9a044fc44c0bd

    展开全文
  • 2017年接触到APICloud是杭州一家小外包,老板说要做一个关于滑雪的APP,当时前端开发就我自己,与六七个PHP一起开发。老板当时的条件是要上App Store,就这一条,思来想去加上朋友推荐,以及直接用hbuidder打包测试...

    1:APICloud

              2017年接触到APICloud是杭州一家小外包,老板说要做一个关于滑雪的APP,当时前端开发就我自己,与六七个PHP一起开发。老板当时的条件是要上App Store,就这一条,思来想去加上朋友推荐,以及直接用hbuidder打包测试,发现APICloud比较好用,且文档比较详细。当时需求不是太明确,所以一路上磕磕绊绊,最后用vue加APICloud搭出了最原始的版本。建议如果单单做Android和ios比较推荐此框架。

          app需求:

               1:中英切换。

               2:长视频上传。

               3:支付宝支付。

               4:聊天功能。

             其他简单的需求不在一一表述,反正以上功能都已实现。

          APICloud缺点:因为用人家的框架,所以某些插件可能不太适合工作所需,然后就出现了一个问题,搜出来的插件收费,所以不打算付费的话就不要用了,不过插件还好,一般三四百吧,不过跟老板说说,老板一般还是会同意的。然后就是文档一般就是分部的,想用什么东西需要自己把东西组装在一起。所以对脑残玩家不太友好。

          APICloud优点:比如说获取硬件设施就比较好用。最方便的还是它的文档,自己组装简单方便比较详细,打包封壳比较容易,脑残式配置,小白级别的都能自己倒腾出来,而且几乎所有的需求差不多都有,而且因为框架比较老。这个老是褒义词,所以自己出现的问题都能在社区里搜索到答案。

    2:原生

            公司是干区块链的,老板我觉得还是比较好的,要做一个小游戏我觉得挺简单,然后技术总监来了让我做游戏,而后是对接去哪网飞机票查询购买等需求。去上班以后发现公司有一个iOS和Android写两套代码,然后从app里跳转链接在APP打开,也是常用方法,也是比较奇葩。建议到是没有就是数据交换的时候要小心原生跟前端传值老恶心了。

      app需求:

               1:类似蚂蚁森林与农场的结合版。

               2:去哪网的接口对接。

               3:支付宝支付。

         原生缺点:最大的缺点就是支付返回的问题,因为在支付是两套代码,所以是从链接到程序在到链接的模糊过程,出现问题以后很难察觉数据在某一步除了问题,因为是用vue的问题跳转支付后无法返回指定页面。而且不同手机兼容问题会改到死,所以手机版本仅支持Android5.0以上,且在iOS上会有各种奇葩问题,z-index不生效啦什么的。

         原生优点:不用管乱七八糟的闪退问题,原生的体验就是好,然后跟我没啥关系.....然后没了........

    3:uniapp

           项目现在还在做所以知道的比较详细。今天为什么写这一篇文章,现在是凌晨一点,我为什么不睡觉,想的对我确实在等项目上线,一把辛酸泪,不过还好明天晚些来。uniapp最大的好处是什么,对就是一端多用,好也就好在一端多用,坏也坏在一端多用谁做谁知道,因为需求比较简单就不一一表述了。

    uniapp缺点:因为要一端多用,所以要条件编译,所以干的慢,所以老板就觉得就几个页面还干那么慢,所以在评估项目时间请按两倍左右来,再少就只求多福吧,像微信小程序微信授权,在APP上就跑不动,因为小程序的现在,样式就定死了,就那几个样式有header头没头,所以样式问题如果插件没有就比较难实现了,还有就是因为框架比较新,所以出现某些问题搜的搜不到,在然后就是小程序限3M还是2M来着,,,,所以想做还大功能还全面的APP就不要想了,单单做一种例外。

    uniapp优点:一端多用,做单一品种比较不错,简单方便,小巧。

         至此以上就是我做这两三年的用的感受了,什么时候下班,我想下班...............................................................................................................................................................................................四点了,我还在,甚至还想赶个早饭。

    展开全文
  • 从现在看来,前端开发和 Native 开发并没有谁取代谁,而是正在融合,融合之后的产物就是所谓的“大前端”。为了顺应这种趋势,很多大公司的组织架构也做了相应的调整,把前端团队和 iOS、Android 一起合并为大前端...
  • 移动前端开发移动前端开发指的是AndroidiOS的原生APP开发。Android原生APP开发用Java语言编写,iOS原生APP开发用Object-C(Swift)语言编写,原生APP在浏览体验上部分优于移动前端网页。移动(WEB)前端开发移动...
  • 原生开发(NativeApp) 指的是使用IOS、Android官方提供的工具、开发平台、配套语言进行手机App开发的方式。 混合开发(HybirdApp) 指的是使用前端已有的技术(HTML+CSS+JS),然后再搭配一些相关的打包编译技术,...
  • 在上一篇博客中已经大家聊了,关于JS与Android、Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android、Ios通信的相同点不同点,以便帮助我们在进行混合式开发时,提高代码质量,实现两者在...
  • 所以使用uni-app开发的本质还是使用Vue,本文主要比较的是Vue小程序原生开发的区别。 1.页面布局模板。 Vue:模板只有一个根标签 <template> <view></view> </template&.
  • 单小程序SDK是原生SDK,提供的Android版本和iOS的版本,需要在原生工程中集成,然后即可运行用uni-app框架开发的小程序前端项目,一套代码两端运行 名词解释 宿主:想要重建小程序的原生App,集成uni小程序SDK的宿主...
  • 前言:ios开发和现在的大前端、跨端开发在底层上的道理是相通的,因此通过学习ios开发,可以形成对APP开发体系的理解。 一、app开发的知识体系 基础 应用开发 原理 原生前端 二、基础模块 按照app的...
  • 从历史上看,技术栈分为两类:原生(意味着能够在 iOS 或 Android 中开发应用程序)混合(iOS Android),基于 HTML Javascript 等网络技术。做出决定时考虑的主要因素是性能(我的应用程序运行的速度)...
  • 目前市场上主流的APP分为三种:原生APP、Web APP(即HTML5)和混合APP三种,相对应的定制开发就是原生开发、H5开发和混合开发。 一、APP原生开发 原生开发(Native App开发),是在Android、IOS等移动平台上利用提供...
  • HybridApp(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”“Web App跨平台开发的优势” 通俗来讲,就是将h5我们写好的移动端页面,放到ios设备以及...
  • 目前很多软件公司是没有app开发人员的,只有服务器端和前端开发。如果这种公司要打包app的时候,一般有两种选择: 公司有一个或者两个全栈,他们会做app打包 外包给其他公司进行打包 现在很多的原生app中都会加
  • 最大限度的代码重用:在iOS应用开发过程中,开发者可以直接使用在服务器和前端能可靠运行的代码。数以万计的模块:拥有着非常丰富的模块资源,通过npm,开发者可以使用任意模块。快速创新:Node.app提供了开发者熟悉...
  • 项目背景:现有H5项目...WebViewJavascriptBridge是移动UIViewHtml交互通信的桥梁,用白话来说就是实现java(ios为oc)js的互相调用的桥梁。替代了WebView的自带的JavascriptInterface的接口,使得我们的开发更...
  • 一 ionic简介 ionic是一个专注于用WEB开发技术,基于HTML5创建类似于手机平台原生应用的一个开发框架。绑定了AngularJSSass。这个框架的目的是从web的角度...ionic可以支持定制android和ios的插件,也支持服务端RE
  • 真正彻底的跨平台开发,不是简单的跨iOS和Android。 基于mui,一套HTML5工程,通过前端构建工具(如grunt)条件编译,可同时发行到iOS Appstore、安卓各大应用商店、普通手机浏览器、微信App...
  • 对于移动开发者来说,Weex主要解决了频繁发版多端研发两大痛点,同时解决了webapp开发中, 前端语言性能差显示效果受限的问题。 开发者只需要撰写HTML/CSS/JAVASCRIPT来开发Native级别的Weex界面。
  • ),我在手机上用过一些APICloud 官网的成功案例,感觉用起来还不错,但现在市场主流的一些应用貌似还是原生 混合式的原生+前端, 我还是觉得android原生开发是不可替代的是它们不能比的,但我又不能详细说出论据...
  • 一、前言 ...1.提高开发效率,以钉钉为例在涉及到一些OA操作比如打卡,请假等功能的时候,显然一个嵌入一个网页就能够满足需求,如果在让IOS和Android再去各自开发一套那么效率就很低了。 2.提高迭代效...
  • 由于种种因素,现在国内的移动开发大都是原生和html5或者开发, 那么iOS端的UIWebViewWKWebView就启到了非常重要的作用! 而从我们原生页面跳转的web页面的时候我们往往需要像前端传递参数,今天我们要说的就是:...
  • 关注前端公众号前端每日一博,每日为你分享一篇前端系列博文。永不断更!前言为了提高开发效率,开发人员往往会使用原生app里面嵌套前端h5页面的快速开发方式,这就要涉及到h5和原生的相互调...
  • 这篇文章,我将着重分析当前主流跨平台开发解决方案(偏架构)如Flutter、RN、Weex、Hybrid App,并对新晋跨端解决方案FusionChameleon做一些分析,在传统原生开发不断被唱衰、大前端试图一统天下的今天,了解这些...
  • 前端框架(混合开发框架)

    万次阅读 2018-05-16 12:00:34
    基于此框架可以实现android和ios的同时开发. 前端采用hbuilder提供的mui框架,并整合了mint-ui+iview等第三方框架 app打包使用hbuilder提供的功能进行原生打包 采用vue-router实现单页路由路由之间的相互...
  • iOS H5+ 插件开发注意事项(mui)

    千次阅读 2017-03-17 14:34:05
    iOS原生只需要提供数据信息即可。同事用HBuilder完成了前端代码(业务逻辑UI布局)。我想到的只有通过插件(plugin)的方式了... 在DCloud上有详细的插件文档说明:...
  • 前言:现在第三方推送也很多 ,比如极光,融云,信鸽,其原理也是相同利用APNS推送机制 ,前段公司让做自己的推送,1.避免device token被第三方泄露,保护手机设备... 对于iOS8.0以后,原生推送实时性很好,这篇文章

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 447
精华内容 178
关键字:

ios原生开发和前端开发