phonegap研究小结

最近公司有一个用h5写的项目要求要套用phonegap框架,现在项目差不多快完成了,做一些关于这个框架的小结,主要介绍如何在这个框架下用ios原生的代码和js的一些操作

1.首先是如何使用这个框架我们是在别人的项目上改建的,先把相应的html文件放到对应的www的文件下面。如果加载不出来看看你的root文件下面是不是缺少index.html文件如果没有记得添加进去,你的项目默认的登录显示的那个文件复制一份改成index.html,不删除源文件。

2.js代用iOS的代码:

只要在js文件下的对应位置添加依据代码即可:

window.mydiving_contactUs = (function () {

function start() {

var aa=‘010-46668881‘;

console.log(‘-----start-----‘);

$(‘li>img‘).bind(‘touchstart‘,function(){

var telnum=$(this).parent().find(‘em‘).text();

console.log(123,telnum);

//就是这句代码

cordova.exec(function(){},function(){},"UM_SharePlugin","print1",[aa]);

});

}

return {

start: start

}

})();

mydiving_contactUs.start();

这句话的意思就是在框架中调用UM_SharePlugin文件下的print1方法,如果要实现传参那就把相应的参数写到print1后面对应的[]里面如果传递参数比较繁琐请自行封装成字典再写入下面是在UM_SharePlugin.h下面的代码

#import <Foundation/Foundation.h>

#import <Cordova/CDVPlugin.h>

@interface UM_SharePlugin :CDVPlugin

//客服电话

- (void) print1:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;

@end

#import "UM_SharePlugin.h"

@implementation UM_SharePlugin

- (void) print1:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options{

if(TARGET_IPHONE_SIMULATOR){

UIAlertView*al=[[UIAlertViewalloc]initWithTitle:@"必须真机环境"message:nildelegate:nilcancelButtonTitle:@"确定"otherButtonTitles:
nil];

[alshow];

}

[[NSNotificationCenterdefaultCenter]
postNotificationName:@"TELCalled"object:niluserInfo:@{@"key":arguments[1]}];

}

@end

在这个文件下发出通知在相应的mian文件下实现通知即可

#pragma mark-->TEL

-(void)TEL:(NSNotification*)note{

NSLog(@"call");

UIWebView*phoneCallWebView = [[UIWebViewalloc]
initWithFrame:CGRectZero];

NSString*aPhoneNumber=note.userInfo[@"key"];

NSURL *phoneURL = [NSURLURLWithString:[NSStringstringWithFormat:@"tel:%@",aPhoneNumber]];

[phoneCallWebViewloadRequest:[NSURLRequestrequestWithURL:phoneURL]];

[self.viewaddSubview:phoneCallWebView];

}

3.ios原生代码向js传参

首先js文件中要有获取ios代码传递参数的函数例如

function getcityid(cityname)

{

console.log(‘城市名称‘,cityname);

$("#city").text(cityname);

}

home_home.start();

其次是ios部分代码

- (void)viewWillDisappear:(BOOL)animated

{

[superviewWillDisappear:animated];

//通知名仅供测试,根据项目修改

if(city){

[[NSNotificationCenterdefaultCenter]
postNotificationName:@"post2JS"object:city];

}

}

下面是在main函数里面的代码部分

#pragma mark-->城市列表传参

//城市列表传参

[[NSNotificationCenterdefaultCenter]
addObserver:selfselector:@selector(post2JS:)name:@"post2JS"object:nil];

- (void)post2JS:(NSNotification*)note{

//使用alert注意此处最好延迟执行,否则可能程序卡死,未测试非延迟情况下传值问题,延迟执行成功

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1
* NSEC_PER_SEC)),dispatch_get_main_queue(), ^{

[self.webViewstringByEvaluatingJavaScriptFromString:[NSStringstringWithFormat:@"getcityid(‘%@‘)",note.object]];

});

}

这就实现了一个完整的传参。

4.在phonegap框架中使用js文件的时候加载html文件包的时候发现原有的点击事件关闭了,先检查一下对应的html文件下的语句是否含有下面的一句话

<script type="text/javascript" src="../../js/public/cordova.js"></script>

如果没有的话不妨把这句话加进去,说不定会解决你的问题。

时间: 2024-10-11 20:14:56

phonegap研究小结的相关文章

IE内存泄露与无法回收研究小结

IE内存泄露与无法回收研究小结 一.内存泄露    之前确实看了很多资料,但这位大哥的话可谓画龙点睛,不是奉承他,一下子就打通了我的任督二脉,请看: trarck 写道 IE下的内存泄露原因就是循环引用,IE的垃圾回收器不能很好处理这种引用. 会产生泄露的循环引用,只有孤立的DOM对象(脱离DOM树). 孤立的DOM对象间的循环引用,孤立的DOM对象与JS对象的循环引用. 为什么是孤立的DOM对象呢?在离开页面时(刷新,跳转)会删除整个DOM树,在DOM树上的对象也会被删除,就算有循环引用,此时

阿里移动安全挑战赛第二题研究小结

1.取巧的方法 因为不太会看汇编指令,所以看了别人的解题思路后,自己想了个取巧的方法.o(╯□╰)o 之前学习的过程中学会了不少指令,例如strings,列出文件中所有字符串.突然想起来可以导出apk运行时so文件的内存(其实也是现学的- -'), 验证了一次后被比较的字符串就存放在内存中了,于是使用dd命令将内容导入SD卡: [email protected]:/ # dd if=/proc/2829/mem of=/sdcard/hah.mem bs=1 skip=1750364160 co

unity font研究小结

项目用ngui制作的界面.字体使用了unity默认的Arial,公布后在一些android手机上发现中文不显示,就此作了一些调查. 參考unity的font说明文档:http://docs.unity3d.com/Manual/class-Font.html,http://game.ceeger.com/Components/class-Font.html(中文翻译版) 1.使用动态(Dynamic)字体: 优点,动态字基本包含全部字(中文等),大小可调,显示清晰,可用于动态文本. unity方

ICE中间件说明文档

1       ICE中间件简介 2       平台核心功能 2.1        接口描述语言(Slice) 2.2        ICE运行时 2.2.1         通信器 2.2.2         对象适配器 2.2.3         位置透明性 2.3        异步编程模型 2.3.1         异步方法调用 2.3.2         异步方法分派 2.4        订阅/发布编程模型 2.5        动态服务管理(IceBox) 2.6       

关于HTML5、Jquery、Phonegap跨域问题的研究

我的问题: 近期研究Phonegap的相关技术,遇到了服务资源访问的跨域.经过尝试使用服务器端的代理,Phonegap打包后不能够访问到相应资源.在搜索引擎的帮助下,找到了Jquery的jsonp的方式,尝试发现已有的服务资源返回格式不支持.接着转战CORS发现同样需要服务器端配置,几番折腾,后来发现Phonegap原来就不存在跨域访问的问题.于是乎,使用JqueryMobile的ajax测试,打包安装应用,原来真的可以访问.虽然比较曲折,但是也算对js的相关跨域有了一定的认识,在此总结纪录,以

关于 HTML5、Jquery、Phonegap 跨域问题的研究

近期研究Phonegap的相关技术,遇到了服务资源访问的跨域.经过尝试使用服务器端的代理,Phonegap打包后不能够访问到相应资源.在搜索引擎的帮助下,找到了Jquery的jsonp的方式,尝试发现已有的服务资源返回格式不支持.接着转战CORS发现同样需要服务器端配置,几番折腾,后来发现Phonegap原来就不存在跨域访问的问题.于是乎,使用JqueryMobile的ajax测试,打包安装应用,原来真的可以访问.虽然比较曲折,但是也算对js的相关跨域有了一定的认识,在此总结纪录,以供有同样需求

css hack IE兼容调试小结(Webstorm、VS2010),有图有真相,研究了一中午

练习了些CSS代码,发现IE各种不兼容,打算用css hack调试IE 6 7 8.网上搜了些方法,虽然可行,但webstorm和VS2010各种提示报错让人不爽,试了几个小时,最终结论如下: 1.只有IE6 7认那些乱七八槽的符号,可随便用一个(% ^ &之类都行),但大家习惯用*或+,如*.background,这样只有IE6 7才认.但是webstorm会把语法检查把上下行一起标错,看起来不爽,VS干脆就报错不让ctrl E D格式化. 2.!important虽然可用,但要注意顺序,且这

PhoneGap在Mac环境下使用问题小结

PhoneGap在Mac环境下使用问题小结1,问题一:在执行命令phonegap run ios出现“Cordova needs ios-sim version 1.7 or greater, you have version”    解决办法:在命令下运行sudo npm install -g ios-sim 2,问题二:在执行命令phonegap build android出现“Error: ERROR : executing command 'ant', make sure you hav

《构建跨平台APP:PhoneGap移动应用实战》内容简介、目录

当当网链接 http://product.dangdang.com/23567381.html 内容简介 PhoneGap是一款优秀的移动跨平台开发框架,开发者通过它能够快速地将Web应用打包成在各个平台上运行的本地APP. 李柯泉.欧阳薇编著的<构建跨平台APP PhoneGap移动应用实战>分4篇共19章,第一篇是入门篇,包括了PhoneGap的小伙伴们.在安卓开发环境下的配置.对HTML 5前景的简单介绍.第二篇是基础知识篇,包含了设备信息.通讯录.加速度传感器.设备传感器.音频.文件.