使用Cordoval常碰到的问题

1:如何在Cordoval加载远程的URL网址

在Config.xml配置文件时增加下面两个,便可以打开URL的HTML页面


2:在Cordoval中加载同一个域的URL是在APP打开,跳转到其它却是用safari浏览器打开

同样是在Config.xml配置中把下面两个删除,这样它便会一直在APP里面进行跳转


3:如何加载不同的启动页URL地址

在配置Config.xml文件中有个content的节点,里面默认是有一个打开本地的地址index.html(比如:);这个就是跳转到本地包里面的html页面,也可以修改成(比如:);

上面这种只是修改默认的地址,可能不符合对于项目实际用法,项目中要加载Cordova都会有一个viewController的控制器继承于CDVViewController,它时就有一个属性startPage用于设置跳到webView加载的html页面;其中使用CDVViewController通常需要设置wwwFolderName的目录名称,和startPage首页的名称即可。默认wwwFolderName为www,startPage默认为index.html;这个也是模板直接生成时文件的名称;

self.viewController.startPage=@"http://www.cnblogs.com";

4:如何加载HTML页面存放在盒沙中

self.viewController =[[MainViewController alloc] init];

NSString*curFilePath=[NSString stringWithFormat:@"file://%@/www",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];

NSLog(@"路径为:%@",curFilePath);if([[NSFileManager defaultManager] fileExistsAtPath:curFilePath]) {

self.viewController.wwwFolderName=curFilePath;

}

self.viewController.startPage=@"index.html";

同样是在wwwFolderName上做文章,因为它是前缀文件夹的路径,这边要注意是关于路径要运用file://方式进行读取;

因为可以读取沙盒里面的HTML页面,这样我们就可以更加灵活运用,比如HTML通过服务端去下载到沙盒解压,这样就可以做到动态修改;

5:加载页面跟结束加载页面的监听,有两个通知可以监听,用来处理等待效果展现

- (void)viewDidLoad

{

[super viewDidLoad];//Do any additional setup after loading the view from its nib.NSNotificationCenter*center =[NSNotificationCenter defaultCenter];

[center addObserver:self

selector:@selector(onNotification:)

name:CDVPluginResetNotification//开始加载object:nil];

[center addObserver:self

selector:@selector(onNotificationed:)

name:CDVPageDidLoadNotification//加载完成object:nil];

}- (void)onNotification:(NSNotification *)text{

NSLog(@"-----开始等待------");

}- (void)onNotificationed:(NSNotification *)text{

NSLog(@"-----结束等待------");

}

6:刷新UIWebView,UIWebView直接更改url并reload是没有用的。必须声明一个NSURLRequest,并重新loadRequest。刷新时的url必须是符合Cordova规则的url。在Cordova源码中有一个appUrl的方法,通过这个方法转出的url才能被CDVViewController正常加载;

localWebVC.wwwFolderName =@"www";

localWebVC.startPage=@"local.html";

NSURL*url =[self.localWebVC performSelector:@selector(appUrl)];if(url)

{

NSURLRequest*request =[[NSURLRequest alloc] initWithURL:url];

[self.localWebVC.webView loadRequest:request];

}

7:使用pod管理Cordoval及其插件

pod'Cordova'

如果需要引入一些相关的插件,可以加入如下配置,下面的这些插件可以通过pod搜索到:

pod'CordovaPlugin-console'pod'cordova-plugin-camera'pod'cordova-plugin-contacts'pod'cordova-plugin-device'pod'cordova-plugin-device-orientation'pod'cordova-plugin-device-motion'pod'cordova-plugin-globalization'pod'cordova-plugin-geolocation'pod'cordova-plugin-file'pod'cordova-plugin-media-capture'pod'cordova-plugin-network-information'pod'cordova-plugin-splashscreen'pod'cordova-plugin-inappbrowser'pod'cordova-plugin-file-transfer'pod'cordova-plugin-statusbar'pod'cordova-plugin-vibration'

注意:如果没有用pod来管理Cordova,默认工程都会有一个CordovaLib.xcodeproj来把Cordova的类引入,所以建议Cordova用pod引入,就可以调用,而关于html、JS等静态模板还是在工程中;可以查看下面两个网址

iOS中Cordova开发初探 地址:http://blog.devzeng.com/blog/hello-cordova-ios.html

Cordova使用Pod实例 地址:https://github.com/phonegap/phonegap-webview-ios

三:插件内容

对于Cordova在插件上面还是比较多,也可以自定义插件的开发,对于插件下面已经有列出一些,其它插件可以上Cordova或者gitHub进行查找;

支付宝支付插件:

iOS/Android 地址:https://github.com/fami2u/cordova-plugin-alipay.git微信支付插件:

iOS/Android 地址:https://github.com/fami2u/cordova-plugin-weipay.gitping++支付插件:

iOS 地址:https://github.com/fami2u/cordova-ping-fami.git扫描二维码和条形码插件:

iOS/Android 地址:https://github.com/fami2u/cordova-barcodescanner-fami.git拍照插件:

iOS/Android 地址:https://github.com/fami2u/cordova-plugin-camera.git极光推送插件:

iOS/Android 地址:https://github.com/fami2u/jpush-phonegap-plugin.gitiOS 地址:https://github.com/fami2u/cordova-Jpush-fami.git第三方登录插件:

iOS 地址:https://github.com/fami2u/cordova-UMLogin-fami.gitJS 地址:https://github.com/fami2u/cordova-plugin-wechat.git第三方分享插件:

iOS 地址:https://github.com/fami2u/cordova-UMShare-fami.git跳转地图插件:

iOS 地址:https://github.com/fami2u/cordova-plugin-map.git视频播放插件:

iOS 地址:https://github.com/fami2u/cordova-player-fami.git

四:有可能出现的问题

1:在使用cordova6.0的过程中,编译好的APP运行在IOS7+系统上默认是与状态栏重叠的,而运行在IOS6及老版本中时是于状态栏分离的。

解决办法:把文件MainViewController.m中的方法viewWillAppear进行相关修改如下。作用是更改view的边界,使其下移20px,刚好是状态栏的高度。

- (void)viewWillAppear:(BOOL)animated

{if([[[UIDevice currentDevice]systemVersion ] floatValue]>=7)

{

CGRect viewBounds=[self.webView  bounds];

viewBounds.origin.y=20;

viewBounds.size.height=viewBounds.size.height-20;

self.webView.frame=viewBounds;

}

[super viewWillAppear:animated];

}

2:在html页面内调用系统相机以后再返回,整个页面底部会有白色的空白控件,用调试工具查看后空白区域的高度是20px.该如何解决?

解决办法:由于整个cordova项目相当于一个页面的应用,不同的模块聚集在一起,所以当当前屏幕消失后(比如进入系统相机拍照页面)再出现的时候,还是会执行上面的代码,所以界面高度再次减少20px.

-(void)viewWillDisappear:(BOOL)animated

{if([[[UIDevice currentDevice]systemVersion ] floatValue]>=7)

{

CGRect viewBounds=[self.webView  bounds];

viewBounds.origin.y=20;

viewBounds.size.height=viewBounds.size.height+20;

self.webView.frame=viewBounds;

}

[super viewWillDisappear:animated];

}

六:JS跟OC交互实例

            Capture Photo                //简单跟OC交互,没有回调//function test()//{//options={quality:"200"};//cordova.exec(null,null,'HelloWorld','sayHello',[options]);//}function test()

{

options={quality:"200"};

cordova.exec(

function(result){vars=result;

alert(s);

},

function(error)

{

alert("error",error);

}

,'HelloWorld','sayHello',[options]);

}                交互OC
   

可以查看文章对于插件的编写有进一步的说明,http://www.jianshu.com/p/e982b9a85ae8

七:分享Cordova不错的文章:

使用Cordova进行iOS开发 (环境配置及基本用法) :http://www.jianshu.com/p/d24219c008b6

使用Cordova进行iOS开发 (第三方插件的使用:Camera插件):http://www.jianshu.com/p/1e3d0c915dbc

使用Cordova进行iOS开发 (已存的项目中添加Cordova及自定义插件):http://www.jianshu.com/p/e982b9a85ae8

Cordova插件开发入门(IOS版OC跟JS交互):http://my.oschina.net/crazymus/blog/516388

浅析 Cordova for iOS(OC跟JS交互的说明):http://www.cocoachina.com/industry/20130520/6238.html

cordova CDVViewController解析:http://blog.csdn.net/u011417590/article/details/50895734

附整理的Cordova小实例:https://github.com/wujunyang/jiaCordovaDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 太长了,还是转载吧...今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源...
    庞哈哈哈12138阅读 20,105评论 3 283
  • 今天早上和老公去喝完早茶出来,不知道怎么就聊到了手机的话题,男人好像总是很喜欢新出的手机或车,电子产品,就像...
    一梦行者阅读 736评论 2 4
  • 今天…我发现了一个问题… 这个问题就是…我真的瘦了……… 在三四个月前……我是这样的… 但是……现在的我……是这样...
    橘子罐头iKyyy阅读 404评论 0 0
  • 这一周李笑来老师更新的概念是“智商”。 第一部分,分析一下李笑来的写作逻辑: 首先,提出“大部分智商不是天定而是后...
    zishigzy阅读 763评论 0 0
  • 中国股市自2638点以来平稳运行了一年多的时间,当前时间点多个潜在利空因素越来越可能形成共振,近期大幅下跌概率很高...
    重庆雷昆阅读 178评论 0 0