百度高德地图 sdk jspatch是否包含jspatch

ios 高德地图含有jspatch吗_百度知道
ios 高德地图含有jspatch吗
我有更好的答案
3,跳转至另一个页面,自行选择下载离线地图、打开ios端的高德地图客户端;
2、点击“离线地图”选项、点击左上角的用户1
为您推荐:
其他类似问题
等待您来回答桌面软件:
网站信息:
网页编辑:
网站调试:
代码转换:
友情连接:
网站地图:
| , , 71-772-677, 46-2003-15
Dev by MYIP & design by Xart 黑ICP备号JSPatch – 动态更新iOS APP
招聘信息:
JSPatch是最近业余做的项目,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的能力:动态更新APP,替换项目原生代码修复bug。用途是否有过这样的经历:新版本上线后发现有个严重的bug,可能会导致crash率激增,可能会使网络请求无法发出,这时能做的只是赶紧修复bug然后提交等待漫长的AppStore审核,再盼望用户快点升级,付出巨大的人力和时间成本,才能完成此次bug的修复。使用JSPatch可以解决这样的问题,只需在项目中引入JSPatch,就可以在发现bug时下发JS脚本补丁,替换原生方法,无需更新APP即时修复bug。例子@implementation&JPTableViewController
-&(void)tableView:(UITableView&*)tableView&didSelectRowAtIndexPath:(NSIndexPath&*)indexPath
&&NSString&*content&=&self.dataSource[[indexPath&row]];&&//可能会超出数组范围导致crash
&&JPViewController&*ctrl&=&[[JPViewController&alloc]&initWithContent:content];
&&[self.navigationController&pushViewController:ctrl];
@end上述代码中取数组元素处可能会超出数组范围导致crash。如果在项目里引用了JSPatch,就可以下发JS脚本修复这个bug:#import&“JPEngine.m"
@implementation&AppDelegate
-&(BOOL)application:(UIApplication&*)application&didFinishLaunchingWithOptions:(NSDictionary&*)launchOptions
&&&&[JPEngine&startEngine];
&&&&[NSURLConnection&sendAsynchronousRequest:[NSURLRequest&requestWithURL:[NSURL&URLWithString:@"http://cnbang.net/bugfix.JS"]]&queue:[NSOperationQueue&mainQueue]&completionHandler:^(NSURLResponse&*response,&NSData&*data,&NSError&*connectionError)&{
&&&&NSString&*script&=&[[NSString&alloc]&initWithData:data&encoding:NSUTF8StringEncoding];
&&&&if&(script)&{
&&&&&&[JPEngine&evaluateScript:script];
&&&&return&YES;
defineClass("JPTableViewController",&{
&&//instance&method&definitions
&&tableView_didSelectRowAtIndexPath:&function(tableView,&indexPath)&{
&&&&var&row&=&indexPath.row()
&&&&if&(self.dataSource().length&>&row)&{&&//加上判断越界的逻辑
&&&&&&var&content&=&self.dataArr()[row];
&&&&&&var&ctrl&=&JPViewController.alloc().initWithContent(content);
&&&&&&self.navigationController().pushViewController(ctrl);
},&{})这样 JPTableViewController 里的 -tableView:didSelectRowAtIndexPath: 就替换成了这个JS脚本里的实现,在用户无感知的情况下修复了这个bug。更多的使用文档和demo请参考。原理JSPatch用iOS内置的JavaScriptCore.framework作为JS引擎,但没有用它JSExport的特性进行JS-OC函数互调,而是通过Objective-C Runtime,从JS传递要调用的类名函数名到Objective-C,再使用NSInvocation动态调用对应的OC方法。详细的实现原理以及实现过程中遇到的各种坑和hack方法会另有文章介绍。方案对比目前已经有一些方案可以实现动态打补丁,例如,可以用Lua调用OC方法,相对于WaxPatch,JSPatch的优势是:1.JS语言JS比Lua在应用开发领域有更广泛的应用,目前前端开发和终端开发有融合的趋势,作为扩展的脚本语言,JS是不二之选。2.符合Apple规则JSPatch更符合Apple的规则。里3.3.2提到不可动态下发可执行代码,但通过苹果JavaScriptCore.framework或WebKit执行的代码除外,JS正是通过JavaScriptCore.framework执行的。3.小巧使用系统内置的JavaScriptCore.framework,无需内嵌脚本引擎,体积小巧。4.支持blockwax在几年前就停止了开发和维护,不支持Objective-C里block跟Lua程序的互传,虽然一些第三方已经实现block,但使用时参数上也有比较多的限制。相对于WaxPatch,JSPatch劣势在于不支持iOS6,因为需要引入JavaScriptCore.framework。另外目前内存的使用上会高于wax,持续改进中。风险JSPatch让脚本语言获得调用所有原生OC方法的能力,不像web前端把能力局限在浏览器,使用上会有一些安全风险:1.若在网络传输过程中下发明文JS,可能会被中间人篡改JS脚本,执行任意方法,盗取APP里的相关信息。可以对传输过程进行加密,或用直接使用https解决。2.若下载完后的JS保存在本地没有加密,在未越狱的机器上用户也可以手动替换或篡改脚本。这点危害没有第一点大,因为操作者是手机拥有者,不存在APP内相关信息被盗用的风险。若要避免用户修改代码影响APP运行,可以选择简单的加密存储。其他用途JSPatch可以动态打补丁,自由修改APP里的代码,理论上还可以完全用JSPatch实现一个业务模块,甚至整个APP,跟wax一样,但不推荐这么做,因为:JSPatch和wax一样都是通过Objective-C Runtime的接口通过字符串反射找到对应的类和方法进行调用,这中间的字符串处理会损耗一定的性能,另外两种语言间的类型转换也有性能损耗,若用来做一个完整的业务模块,大量的频繁来回互调,可能有性能问题。开发过程中需要用OC的思维写JS/Lua,丧失了脚本语言自己的特性。JSPatch和wax都没有IDE支持,开发效率低。若想动态为APP添加模块,目前React Native给出了很好的方案,解决了上述三个问题:JS/OC不会频繁通信,会在事件触发时批量传递,提高效率。(详见)开发过程无需考虑OC的感受,遵从React框架的思想进行纯JS开发就行,剩下的事情React Native帮你处理好了。React Native连都准备好了。所以动态添加业务模块目前还是推荐尝试React Native,但React Native并不会提供原生OC接口的反射调用和方法替换,无法做到修改原生代码,JSPatch以小巧的引擎补足这个缺口,配合React Native用统一的JS语言让一个原生APP时刻处于可扩展可修改的状态。目前JSPatch处于开发阶段,稳定性和功能还存在一些问题,欢迎大家提建议/bug/PR,一起来做这个项目。版权声明:本文章在微信公众平台的发表权,已「独家代理」给指定公众帐号:iOS开发(iOSDevTips)。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量7439点击量6358点击量3972点击量3792点击量3546点击量3074点击量2797点击量2631点击量2463
&2016 Chukong Technologies,Inc.
京公网安备89怎样在网站中引用百度地图?
1、在html中添加一个div,添加一些样式。
&div id=&divMap& style=&width:50%;height:300border:1&&&/div&
2、在head中添加对百度地图的引用。
&script type=&text/javascript& src=&http://api./api?v=2.0&ak=您的密钥&&&/script&
3、添加js,创建坐标实例。(注:该js部分要放在div的下面,不然会报错的)
&script type=&text/javascript&&
var map=new BMap.Map(&divMap&)
//创建地图实例
var point=new BMap.Point(116.404,39.915)
//创建点坐标
map.centerAndZoom(point,13)
//初始化地图,设置中心点坐标和地图级别
4、运行结果,如下图所示
" href="/web/html-css/266.shtml" target="_blank">&&HTML5从入门到精通&&
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 百度地图jspatch 的文章

 

随机推荐