2017-11-09 12:33:33 u012581760 阅读数 937
  • 完全征服React Native

    React Native是Facebook于2015年推出的跨平台开发工具,可用于开发Android和iOS App,并且同时具有混合开发的优点(热更新,跨平台)以及本地App的性能。 本课程采用新的ES6开发,主要内容包括ReactNative的基础知识,ReactNative的布局,组件,API,封装本地API和组件,发布ReactNative App,本地与ReactNative深度结合

    57543 人正在学习 去看看 李宁

现在APP开发模式是Hybrid APP开发 (即混合模式,半原生半H5页面)
原生的是Native APP H5就是Web App

在Hybrid当中,如何判断APP页面是原生的还是H5页面呢,
1 ,看断网情况
把手机的网络断掉,然后点开页面,然后可以正常显示的东西是原生写的,
显示404或者错误页面的是html页面

2,下拉页面的时候显示网址提供方的一定是H5

3、下拉刷新的时候如果有明显刷新现象(比如闪一下)的是H5页面

4、android手机可以修改设置: 设置—》开发者选项—》显示布局边界(Show layout bounds) 。
这样就能看到控件的布局了,如果包含图片、文字等信息的一整块区域只有一个边框,应该就是H5实现的。

5 ,长按文字出现拷贝,复制,分享等菜单栏是H5页面

2019-01-07 10:16:15 nongminkouhao 阅读数 1158
  • 完全征服React Native

    React Native是Facebook于2015年推出的跨平台开发工具,可用于开发Android和iOS App,并且同时具有混合开发的优点(热更新,跨平台)以及本地App的性能。 本课程采用新的ES6开发,主要内容包括ReactNative的基础知识,ReactNative的布局,组件,API,封装本地API和组件,发布ReactNative App,本地与ReactNative深度结合

    57543 人正在学习 去看看 李宁

Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。
原生是Native APP,H5就是Web App

在Hybrid 当中,如何快速的判断一个APP页面是原生的还是H5页面呢?
1、看断网的情况
把手机的网络断掉。然后点开页面。然后可以正常显示的东西就是原生写的。
显示404或则错误页面的是html页面。

2、看布局边界
开发者选项->显示布局边界,页面元素很多的情况下布局是一整块的是h5的,布局密密麻麻的是原生控件。页面有布局的是原生的,否则为h5页面。(仅针对安卓手机试用)如下图所示:

3、看复制文章的提示,需要你通过对比才能得出结果。
比如是文章资讯页面可以长按页面试试,如果出现文字选择、粘贴功能的是H5页面,否则是native原生的页面。
有些原生APP开放了复制粘贴功能或者关闭了。而H5的css屏蔽了复制选择功能等等情况。需要通过对目标测试APP进行对比才可知。
这个在支付宝APP、蚂蚁聚宝都是可以判断的。

4、看加载的方式
如果在打开新页面导航栏下面有一条加载的线的话,这个页面就是H5页面,如果没有就是原生的。 微信里面打开我们的H5页面常见的有个绿色的 加载线条。如下图红框里面所示:

5、看app顶部 导航栏是否会有关闭的操作
如果APP顶部导航栏当中出现了关闭按钮或者有关闭的图标,那么当前的页面肯定的H5,原生的不会出现(除非设计开发者故意弄的)
美团的、大众点评的APp、微信APP当加载h5过多的时候,左上角会出现关闭2字。

6、判断页面 下拉刷新的时候(前提是要有下拉刷新的功能)
如果界面没有明显刷新现象的是原生的,如果有明显刷新现象(比如闪一下)的是H5页面(ios和android)。
比如淘宝的众筹页面。

7、下拉页面的时候显示网址提供方的一定是H5

来源:这里

2016-12-15 13:32:08 oMrLeft123 阅读数 3522
  • 完全征服React Native

    React Native是Facebook于2015年推出的跨平台开发工具,可用于开发Android和iOS App,并且同时具有混合开发的优点(热更新,跨平台)以及本地App的性能。 本课程采用新的ES6开发,主要内容包括ReactNative的基础知识,ReactNative的布局,组件,API,封装本地API和组件,发布ReactNative App,本地与ReactNative深度结合

    57543 人正在学习 去看看 李宁

比较直接的几个方式如下:

  • 手机设置———>开发者选项———–>开启显示布局边界,页面有布局的是native否则为h5页面;
  • 长按页面,如果出现文字选择、粘贴功能的是H5页面,否则是native页面,我在我们自己的App里面试了一下是可以判断的。但是有一种情况,如果H5页面就是一张图片,那么是不能通过这个方法验证的。
  • 抓包抓到url或者html的代码则肯定有 「H5」布局。

还有一些情况需要从native和h5的区别去判断了,区别如下:

  • app和h5页面相比,拥有较少的页面跳转。网络环境一致的情况下,h5页面渲染是需要调取服务器的,但是app的渲染在本地,所以h5页面跳转更费力,不稳定感会强一些。所以h5页面想要减少跳转的话,一般都会使用交互技巧来隐藏文字。
  • h5页面展示空间比app小,给使用者带来的记忆负担大于app。人的大脑能短期记忆,但是这样的记忆是不稳定的。如果用户在滚动翻阅屏幕的过程中,需要临时记忆的信息越多,他们的表现是会越差的。现在,只有很少的人会有耐心慢慢看完长长的内容,h5页面相对于app而言,多了浏览器导航所占用的屏幕空间。
  • h5与app相比的优势在于h5页面可以随意的分享,而且迭代是很方便的,不同的系统只要适配一次即可。但是app的每次迭代需要在不同系统基础上迭代。
  • h5页面与app导航设计不同。h5页面使原有底部导航消失,有效的导航遇到挑战。在设计要考虑导航设计,顶部底部或左右侧,还要考虑如何快速跳转回重要页面,导航快捷键:如顶部固定位置、悬浮圆圈或非首屏时页面右侧悬浮。而app的导航更直接方便。
2016-03-10 15:34:03 niejiafa_131 阅读数 1853
  • 完全征服React Native

    React Native是Facebook于2015年推出的跨平台开发工具,可用于开发Android和iOS App,并且同时具有混合开发的优点(热更新,跨平台)以及本地App的性能。 本课程采用新的ES6开发,主要内容包括ReactNative的基础知识,ReactNative的布局,组件,API,封装本地API和组件,发布ReactNative App,本地与ReactNative深度结合

    57543 人正在学习 去看看 李宁

Example:

有个需求,点击 H5页面的一个按钮,将 H5页面的信息传递给我们 native


Method:

目前我做过的项目中使用过3种方案:

第一种是集成WebViewJavascriptBridge(地址:https://github.com/marcuswestin/WebViewJavascriptBridge)这是方案简单快速,推荐使用

第二种自己来写,原理如下:因为 native中可以时刻监听 webView的请求,故我们可以从这点出发,下面有两种实现方式:

1>我们可以让 H5开发人员在点击按钮的这个动作中,发起一个虚拟的请求(拼一个无效的 url,可以将传给 native的信息拼入,看了WebViewJavascriptBridge的源码,发现他的原理与这类似);

2>如果不将 native的信息拼入,也可以这样操作,因为是无效 url,肯定是请求失败,H5端可以将需要传给 native 端的信息包入失败信息里面传给我们(不推荐这样做,时间耗费的比第一种多)

第三种使用 iOS7.0后新增 API实现

self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

self.jsContext[@"jsBack"] = ^(NSDictionary *param) {

/// param返回数据

};


以上3种方案均可实现 H5端向 Native 传送信息


Demo地址:https://github.com/indexjincieryi/NDH5ToNative

如果觉得对你有帮助,就给个 star 吧!


Demo Show:


2016-12-15 14:08:33 voidxinnn 阅读数 1130
  • 完全征服React Native

    React Native是Facebook于2015年推出的跨平台开发工具,可用于开发Android和iOS App,并且同时具有混合开发的优点(热更新,跨平台)以及本地App的性能。 本课程采用新的ES6开发,主要内容包括ReactNative的基础知识,ReactNative的布局,组件,API,封装本地API和组件,发布ReactNative App,本地与ReactNative深度结合

    57543 人正在学习 去看看 李宁

本博客迁移来自:http://www.jianshu.com/users/465865c268ed/latest_articles
由于项目中H5页面比较多,这几天H5页面中有个新需求:点击H5页面的某个按钮需要传递参数和跳转到Native页面。
为了省事,找了个简单的方法:按钮点击后H5请求一个假的自定义的链接,把需要传递到Native的参数通过GET请求的方式拼接。然后再Native中WebView的delegate方法中去拦截URL,解析这个URL得到我们想要的值,并且跳转到想要的页面中去:
1:实现WebView的Delegate方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
   return [WGH5PageViewModel redirectionWithRequest:request];
}


//这是WGH5PageViewModel中的一个方法
+ (BOOL)redirectionWithRequest:(NSURLRequest *)request{

    NSString *requestString = [[[request URL]absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //转正办理(解雇员工时要从H5页面跳到原生的离职页面,并携带该员工的id
    if ([requestString containsString:@"dimission.html"]) {
        NSArray *strArr = [requestString componentsSeparatedByString:@"staffId="];
        NSString *staffId = strArr.lastObject;
        //由于使用了路由统跳,页面所需要的数据都放在字典中,然后再把字典转成String的形式传递到下一个页面
        NSDictionary *dataDic = @{@"type":@"1",@"staffId":staffId};
        NSString *dicStr = dataDic.mj_JSONString;
       //push到指定的Native页面
        [[HHRouter shared] pushURLString:[NSString stringWithFormat:@"/staffdimission/员工离职/%@",dicStr] animated:YES];
        return NO;
    }

    return YES;
}

由此简单的实现了从H5跳转到指定的Native页面并传递参数。
PS:方法中的关于路由通跳的实现可以参考我的这篇博文:http://www.jianshu.com/p/9e29c6d9983a
其中我把HHRouter的方法改进了一下,让页面的跳转可以在任何Object中实现(之前只能在ViewController中push到下一个页面,改进后可以在model中,也可在View中push)。

native和js交互最好还是使用JSCore,jscore使用的例子请看github:https://github.com/voidxin/VXJSCore/tree/master/VXJSContext

没有更多推荐了,返回首页