3.25
来源:互联网 发布:电力负荷计算软件 编辑:程序博客网 时间:2024/06/05 12:50
安装PhoneGap
现在使用PhoneGap非常方便,只需要安装node,用简单的命令就能完成安装和使用的工作。
安装PhoneGap:
- sudo npm install -g phonegap
创建phoneGap应用:
- phonegap create my-app
- cd my-app
- phonegap run ios
具体可看phonegap官网进行学习。
PhoneGap与Cordova的关系
Cordova是PhoneGap贡献给Apache后的开源项目,是从PhoneGap中抽离出的核心代码,是驱动PhoneGap的核心引擎。有点类似Webkit和Google Chrome的关系。
渊源就是:早在2011年10月,Adobe收购了Nitobi Software和它的PhoneGap产品,然后宣布这个移动Web开发框架将会继续开源,并把它提交到Apache Incubator,以便完全接受ASF的管治。当然,由于Adobe拥有了PhoneGap商标,所以开源组织的这个PhoneGap v2.0版产品就更名为Apache Cordova。
为什么说这个?因为下面的文章中,会出现Cordova这个命令,大家不要觉得奇怪。
js与native通信的原理
但在切入正题前,需要先了解下iOS js与native通信的原理。了解这个原理,是理解PhoneGap代码的关键。
具体可以看我之前写的iOS Js与native相互通信,这里做简单说明。
js –> native
在iOS中,js调用native并没有提供原生的实现,只能通过UIWebView相关的UIWebViewDelegate协议的
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
方法来做拦截,并在这个方法中,根据url的协议或特征字符串来做调用方法或触发事件等工作,如
- /*
- * 方法的返回值是BOOL值。
- * 返回YES:表示让浏览器执行默认操作,比如某个a链接跳转
- * 返回NO:表示不执行浏览器的默认操作,这里因为通过url协议来判断js执行native的操作,肯定不是浏览器默认操作,故返回NO
- * /
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
- NSURL *url = [request URL];
- if ([[url scheme] isEqualToString:@"callFunction") {
- //调用原生方法
- return NO;
- } else if (([[url scheme] isEqualToString:@"sendEvent") {
- //触发事件
- return NO;
- } else {
- return YES;
- }
- }
值得注意的是,通过这个方式,js调用native是异步的。
0 0
- 3.25
- 3.25
- 3.25
- 3.25
- 3.25
- 3.25~3.28
- 3.25会议记录
- 3.25考试
- python1-3.25
- 3.24-3.25工作总结
- 12.3.3.25 ! expressions
- 3.25 星期四 雨
- SICP Exercise 3.25
- Java---一周总结 3.25
- 3.25学习内容
- 今日新闻3.25
- 3.25日mybatis记录
- 第三章 3.25 3.26
- 深入理解Java内存模型(五)——锁
- 微信源码结构(ios版)
- ui-router
- 在这写感情类博客是不是不太合适
- 设计模式 -- 饿汉模式
- 3.25
- Sql Developer错误:Unable to find a java Virtual Machine
- java excel Workbook API
- 马尔科夫模型初探
- 浏览器开发系列第一篇:如何获取最新chromium源码
- 实体对象的变更
- vim带你装逼带你飞(一)
- hdoj 1840 Equations
- 完美解决 未能打开编辑器:Unmatched braces in the pattern.