--关于phonegap:
android和ios提供了webview视图,它可以用来展示网页,支持HTML5。
phonegap正是使用webview来完成对html和css的包装的。
phonegap允许网页使用系统级别的功能,如加速器,文件系统等,但这些功能的使用会拖慢运行效率。
phonegap目前并不能真正做到“一次书写,到处运行”,有些API只支持部分平台,有些已经提供的API会因为平台的差异有不同的行为。
phonegap 可以做到无缝升级, 不过需要自己实现升级代码
--关于网页对于数据库容量的限制:
native app中展示网页,使用的数据库是属于这个app而不是浏览器的
Android:
phonegap在android平台上,有如下表现:
1. native app中展示网页,可以通过window.opendatabase()申请容量超过5MB的数据库
2. 如果因为数据变更导致超出了申请的容量,当前的事务操作会失败,然后android调用钩子方法重新设置容量大小。其中:
a. 1.x系统容量不变
b. 2.x系统以上容量增加,上限为100MB
ios:
phonegap在ios平台上不提供对db的额外处理。
native app中展示网页,网页所使用的db,limit为5MB,超出这个限制,操作会默默的失败,并且目前没有可以改变这个限制的方法。
ios中要想使用50MB的数据库,必须通过web app方式,除非自行开发功能,将db操作映射到系统的db上。但是由于ios系统的限制,自行开发工作量大。
ios中webview突破db size的5M限制
当在safari中申请超过5m大小的空间时,会弹出提醒让用户确认,但webview中却只是默默的失败。其实5M大小基本也够用了,但如果应用的多媒体内容很多,这点容量则会显得捉襟见肘。如果非要用webview不可,非要突破这个5M限制不可,就可以像下面这样折腾。
虽然两者使用的是同一个浏览器核心,但是webview在有些细节上和safari会不相同,如果要把webapp直接包装移植成native app,会有点麻烦。
由于目前没有方法通过操作webview对象来放宽db size的限制,所以需要考虑调用ios系统的sqlite数据库:当网页依照websql的api调用db.transaction的时候,调用请求由app而不是浏览器(webview)去处理。
因此在ios上,需要覆盖opendatabase的实现,返回定制过的db对象,这个对象将把所有的sql调用发送到ios后端,并响应执行结果。执行序列要保证一致,事务完整性必须被支持。
js前端
覆盖database
Database = function() {
this.queryQueue = {};
}
window.openDatabase = function(){return new Database();}
将sql调用发送到后端,利用phonegap提供的框架支持:
PhoneGap.exec(null, null, "Database", "executeSql", [sql, params, trackId]);
提供一个用于ios后端传递运行结果的钩子:
function executeSqlSuccessIOSCallback(dataObj){...}
这个调用会构造出一个不可见的iframe,iframe对外发出的url请求会被ios后端捕获。
ios后端
相应js调用,利用phonegap提供的框架支持,扩展phonegapCommand
@interface Database : PhoneGapCommand {}
-(void) executeSql:(NSMutableArray *)arguments withDict:(NSMutableDictionary*)options;
@end
注意这里的参数是固定的,方法名对应js调用中的第四个参数,有一种调用就实现一个对应的方法
当executesql产生结果时,调用webview的执行js的接口,把结果放入executeSqlSuccessIOSCallback的参数中,从而使页面知道sql执行完毕并拿到结果
保证执行序列一致
js调用中附加了一个trackId,这个可以根据当前时间来生成,可以用来排序。不过目前来看似乎也没用.
websql api中,sql执行都是在某个事务中进行的,而sqlite作为单文件全局写锁的数据库,同一个时间只能有一个事务在执行,其他事务必须要等待依次执行,因此队列是必须的。
phonegap, 以及浏览器端db容量限制问题
分享到:
相关推荐
- 熟悉各个平台的特性和限制,因为虽然PhoneGap提供了跨平台的能力,但每个平台可能有不同的实现细节。 - 优化Web内容的性能,因为WebView的性能可能不如原生组件,尤其是在处理复杂的UI和大量数据时。 - 使用现有的...
在本项目中,“sencha touch利用phonegap开发android的文件浏览器”,我们看到了这两个技术的结合。首先,PhoneGap的File类接口是关键,它遵循W3C的File API标准,提供了访问和操作本地文件系统的能力。开发者可以...
6. **服务器端处理**:上传的图片需要在服务器端存储,这涉及到文件系统操作、数据库交互以及安全问题,如防止重复上传、权限控制等。 7. **错误处理**:在拍照、选择图片或上传过程中可能出现各种错误,如用户拒绝...
这篇博客“phonegap拍照的获取图片和设置问题”可能会探讨如何在PhoneGap应用中集成这一功能,以及在实现过程中可能遇到的问题和解决方案。 首先,PhoneGap提供了`cordova-plugin-camera`插件,用于访问设备的...
iOS端的PhoneGap项目是基于Cordova(PhoneGap的开源版本)和Xcode,提供了在iOS设备上运行Web技术的桥梁。本资源包含了一个名为“m00sey-phonegap-iphone-95c64f4”的PhoneGap iOS端源码,这个版本可能是特定的...
PhoneGap录音及上传下载是...总之,PhoneGap录音及上传下载涉及了移动应用开发中的多个技术点,包括PhoneGap Media API的使用、文件传输、服务器端接口设计以及用户交互设计等,这些都是构建跨平台移动应用的关键技能。
5. **限制与挑战:** 虽然PhoneGap提供了便利,但也存在性能瓶颈,因为Web应用运行在WebView中,可能不如原生应用流畅。此外,对于一些复杂或高性能需求的场景,PhoneGap可能无法满足。 6. **后续版本的发展:** ...
PhoneGap是一个开源框架..."所涵盖的知识点的详细解析,包括PhoneGap的基本原理、与Android的集成、pad设备的适配、自定义插件的开发以及可能的数据处理策略。这些内容为深入学习和实践PhoneGap开发提供了全面的指导。
【IONIC】 ...IONIC的设计理念是“移动...综合以上,这个压缩包提供了一个使用IONIC和PhoneGap开发的项目源码,以及关于PhoneGap的深入学习材料,对于想要学习或提升混合移动应用开发技能的开发者来说,是非常宝贵的资源。
- **浏览器调试**:由于PhoneGap应用本质上是Web应用,所以你可以使用Chrome开发者工具或Firefox开发者工具来远程调试运行在设备上的应用。只需在设备上打开开发者选项,启用USB调试,然后在电脑上通过开发者工具...
PhoneGap pc 端工具类 调试 app 手机端下载PhoneGap(苹果手机) 这个很不找.
1. `navigator.accelerometer.getCurrentAcceleration()`: 这个方法用于立即获取一次加速度数据,返回一个`Acceleration`对象,包含x、y、z轴的加速度值以及时间戳。 ```javascript navigator.accelerometer....
2. **WebView**:PhoneGap应用实际上是在一个封装的WebView(浏览器内核)中运行,通过JavaScript调用设备的原生功能,如摄像头、GPS、加速度计等。 3. **插件系统**:PhoneGap的插件机制使得开发者可以通过...
本文将围绕着如何通过PhoneGap Build生成Android系统的安装程序,并讨论在此过程中可能遇到的一些常见问题及其解决方案。 #### 二、准备工作 在开始使用PhoneGap Build之前,确保你已经完成了以下步骤: 1. **...
这个资源包含PhoneGap的源代码,版本为Cordova2.9,以及相关的示例程序,这为我们深入理解PhoneGap的工作原理和开发流程提供了宝贵的材料。 Cordova2.9是PhoneGap的一个重要版本,它在那时提供了对多种移动操作系统...
9. **版本兼容性**:随着移动操作系统和浏览器的升级,PhoneGap的兼容性问题需要不断调整。1.0版本可能不支持最新的设备特性,开发者需要评估目标用户群的设备配置。 10. **许可证和开源**:PhoneGap遵循Apache 2.0...
9. **测试和调试**:PhoneGap应用可以在浏览器中进行初步测试,但为了确保在真实设备上的表现,还需要在各种目标平台上进行真机测试。开发者可以使用如Chrome开发者工具或远程调试工具进行调试。 10. **应用商店...
关于PhoneGap转apicloud的那些事
为了克服这些限制,PhoneGap应运而生,成为了一个理想的解决方案。 #### PhoneGap简介 PhoneGap是一款开源框架,最初由Nitobi公司于2008年创建,后来被Adobe收购并更名为Cordova。自2011年起,PhoneGap被纳入...