3.25

来源:互联网 发布:电力负荷计算软件 编辑:程序博客网 时间:2024/06/05 12:50
安装PhoneGap
现在使用PhoneGap非常方便,只需要安装node,用简单的命令就能完成安装和使用的工作。
 
安装PhoneGap:
  1. sudo npm install -g phonegap 
创建phoneGap应用:
  1. phonegap create my-app 
  2. cd my-app 
  3. 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协议的
  1. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
方法来做拦截,并在这个方法中,根据url的协议或特征字符串来做调用方法或触发事件等工作,如
  1. /* 
  2. * 方法的返回值是BOOL值。 
  3. * 返回YES:表示让浏览器执行默认操作,比如某个a链接跳转 
  4. * 返回NO:表示不执行浏览器的默认操作,这里因为通过url协议来判断js执行native的操作,肯定不是浏览器默认操作,故返回NO 
  5. * / 
  6. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
  7.     NSURL *url = [request URL]; 
  8.     if ([[url scheme] isEqualToString:@"callFunction") { 
  9.         //调用原生方法 
  10.  
  11.         return NO; 
  12.     } else if (([[url scheme] isEqualToString:@"sendEvent") { 
  13.         //触发事件 
  14.  
  15.         return NO; 
  16.     } else { 
  17.         return YES; 
  18.     } 
值得注意的是,通过这个方式,js调用native是异步的。
0 0
原创粉丝点击