美文网首页iOS
那些年,我使用 Cordova 遇到的坑

那些年,我使用 Cordova 遇到的坑

作者: DestinyFighter_ | 来源:发表于2015-11-06 15:05 被阅读7283次

首先附上几个网址 :

Cordova 官网: http://cordova.apache.org/

框架引入: http://www.jianshu.com/p/656838ae92bc

交互原理: http://www.cnblogs.com/luoguoqiang1985/p/3574738.html

坑1.在使用 Cordova 时, 注意: 自己工程里面的 cordovaLib 和 Cordova.js 要是同一个版本,否则将会发生你意想不到的事情,比如可以调用支付宝客户端,却调不到网页版的支付宝.切记.

坑2.当引入了新的三方库的时候,运行工程并不会发现什么错误,但是在打包的时候,则会报错,说找不到库里的某个头文件,解决办法就是在 targets -> buildSettings -> Head Search Paths 里面添加下面一行代码:

"$ (OBJROOT)/UninstalledProducts/include”

坑3.当报错说 Object - C … xxxx.o 找不到时,往往是 .a 文件没有引入,引入相关的.a 文件就可以了.

坑4.当 h5 调用本地的插件里的支付方法时,本地开始调用支付宝SDK,但是会爆一个错误:

WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: -[__NSDictionaryM objectAtIndex:]: unrecognized selector sent to instance 0x7fab8b252b60

很显然,是把数组的方法,发送给了字典,通过打断点调试的方法,进入 cordova 内部实现里面看 cordova 对参数的处理,发现 cordova 内部是用 数组来接收参数的,由于参数类型不对,当然会调不到支付宝并崩溃,解决办法是让后台把 JSON 数据放到数组里,当然别忘了通知安卓.

5.当 cordova框架正确引入并且正常工作时,会打印:

Apache Cordova native platform version x.x.x is starting.

坑6.当使用模拟器run的时候,会报如下错误:

LaunchServices: ERROR: There is no registered handler for URL scheme xxx

我检查了下 info.plist 文件里的配置是没有问题的,后来发现这句话的意思是 设备上没有安装支付宝的客户端,所以此时会走网页端.

坑7.今天出现了一个 bug , 就是触发事件的时候 iOS 这边会弹窗,而且连续弹好几次,如下图:


后来发现服务器端也引入了 cordova.js 文件,而且和 native 使用的 cordova.js 不是同一个版本,改为了同一版本就 OK 了.而正常的情况下,考虑到还有安卓的存在,服务器端不应引入 js 文件,应该是在本地写入 cordova.js 到服务端,具体写入方法见本文第 9 条.

8.加载 H5页面的 WebViewController 必须继承于 CDVViewController ,如图:

9. 要在 webview 的代理方法 webViewDidFinishLoad 中 让服务端 读入 cordova.js 文件,而且 cordova.js 文件里面的注释要全部删除才能被读入,暂时还不知道要删除注释的原因 ,具体代码如图:

相关文章

网友评论

  • 往之_:Cordova 插件调用activity 一次启动两个怎么回事
  • 忧零520:楼主你好,我想在里面引入动态库.so可以吗?
  • zrgzhang:大神, cordova自定义插件你会吗?我不懂自定义插件的原理,而且,js 不会写,有影响吗?
  • 太阳微光向太阳:请教一下,集成Cordova 之后运行没问题,但是打包就少文件,按照你说的修改还是说缺少文件
  • 星桥似海:请作者大大赐一份简单的demo,关于远程页面访问本地插件的(远程服务器并没有集成cordova.js文件),本人试用的是cordova4.0,按照您的方法,将cordova.js中的注释都删除了,在webViewDidFinishLoad方法中注入cordova.js代码并没有起作用
  • 二哥很猛:楼主 我也遇到了 7的问题 在服务端引入cordova.js 这货有andorid和ios两个 我就引入了android的 在android手机上正常,在ios上就会弹出好几个对话框, 你的意思是cordova.js全部在客户端引入? 手机端如何引入呢?看网上的例子 都太古老了 无效
  • pikacode:希望能更新更多的"坑",学习一下
  • 4c58bbf6cd6f:楼主,想请问一下,我新建了一个子类viewcontroller,设置继承CDVViewController,但是如何使用webview(这个时候应该是CDVViewController)的代理呢【webviewdidfinishload啥的这些代理 】
  • 4b4d42e9a1bb:LaunchServices: ERROR: There is no registered handler for URL scheme xxx

    楼主,这个坑怎么跳过啊,我也遇到了,昨天还好好的,今天就不能跳转到支付宝的网页了
    4b4d42e9a1bb:@Dream晗晗 这个是因为你的window界面盖住了支付宝网页,本想找一下代码给你看看,但是找不到在哪了,你在网上搜一下支付宝网页无法跳转,应该就能找到方法了,大概的就是需要你需要支付宝的网页盖在window前面
    盲神:@吴章平 您好 我也是前段时间好好的 现在不能跳转网页了 您是怎么解决的呢
  • 沧海小鱼儿:不错!觉得你对 Cordova玩的还是挺溜的
    DestinyFighter_:@沧海小鱼儿 只懂一点皮毛
  • 渔歌子:不错,mark:+1:

本文标题:那些年,我使用 Cordova 遇到的坑

本文链接:https://www.haomeiwen.com/subject/eajchttx.html