App混合开发,顾名思义,是一个开发模式,指的是开发一个App一部分功能用native构建,一部分功能用html5构建,英文名:Hybrid App.

1. 为什么要做混合开发

混合开发最大的优点是:节约成本和时间,缩短App开发周期;

混合开发我自己认为最大的缺点是:性能不是很好,兼容性比较差;

但是目前来讲,5G时代即将到来,以及Android 5.0+的普及以及iOS 9.0+的普及,性能缺陷和兼容性问题都在下降.

2. cordova的由来, 为什么选择使用cordova, cordova的原理

(1) cordova的前世今生:

说起来cordova的时候我们必须要提到PhoneGap, 这是一款开源的跨平台的移动App框架, 使用Html, JavaScript, CSS语言. PhoneGap是Cordova的前身, Adobe收购Nitobi之后保留了PhoneGap的商标, 代码则贡献给了Apache, Apache则将此框架命名为Cordova.

(2) 为什么使用cordova框架:

带有HTML, CSS和JS的移动应用程序

使用一个代码库定位多个平台(即只需要写一套前端H5的代码,然后通过cordova平台框架形成Android和iOS的app)

快速集成, 快速开发, 简单易懂

免费和开源.

(3) cordova的原理

首先要知道一个概念, 插件(Plugins), 它主要用于在JavaScript代码中调用各平台native的功能. 笼统一点讲就是cordova将Mobile OS上的常用的API封装成Plugins的形式, 供webapp开发人员通过js调用.

Cordova项目已经包含一些核心的plugins,如电池、摄像头、通讯录等。开发人员也可以开发自定义的plugin,来实现所需要的功能。

Web App层是开发人员编写代码的主要地方,应用程序以网页的形式呈现,在一个index.html的本地页面文件中引用所需要的各种Web资源,如CSS、JavaScript、图像、影音文件等。应用程序的配置保存在config.xml文件中.

WebView层用来呈现用户界面,即web页面的展现。例如,在iOS平台是通过UIWebView控件实现web页面的呈现(UIWebView之所以能够加载H5页面,其真实原因就是webView也是调用的内置浏览器内核)。

如下图:

3. cordova在iOS上的应用的步骤

cordova使用npm Node.js实用程序安装模块,首选确保您可以使用npm命令.

安装cordova

$ sudo npm install -g cordova

通过cordova创建iOS项目

$ cordova create hello com.example.hello HelloWorld

添加平台

cd hello

$ cordova platform add ios

$ cordova platform add android

查看当前的平台集

$ cordova platform ls

至此,我们的第一个cordova项目已经创建成功了,可以运行起来看一下.

4. cordova的项目介绍(包含项目集成,内部实现机制,cordova插件的调用,自定义插件的开发和调用)

(1)简单分析项目中的文件组成以及作用(如下图)

(2)添加cordova的原有插件,并演示使用(拿device插件举例子)

device插件的安装

先查找到项目的路径,因为插件是要安装在项目路径下的

cd hello

cordova plugin add cordova-plugin-device

观察安装完cordova官方给到我们的插件之后,项目发生了什么变化

device插件的属性调用 device.cordova

我们在index.html中定义一个按钮

device

然后在index.js中去实现按钮的点击事件

function buttonClick() {

alert(device.cordova);

alert(device.uuid);

alert(device.platform);

};

至此,cordova的官方插件的导入和调用已经完成

(3)自定义cordova插件,并演示使用(在项目中演示)

自定义的cordova插件必须继承于CDVPlugin这个类,例如我们定义了一个叫CustomCDVPlugin的插件类,首先我们要在config.xml中去声明,并导入插件.如下

这一步操作是为了让cordova加载配置的时候能够加载到我们自定义的插件,之后js能够调用到我们的原生类.

紧接着就是Native的插件的编写,如下

自定义插件类的.h文件

#import "Cordova/CDVPlugin.h"

@interface CustomCDVPlugin : CDVPlugin

- (void)nslog:(CDVInvokedUrlCommand *)logString;

@end

自定义插件类的.m文件

#import "CustomCDVPlugin.h"

@implementation CustomCDVPlugin

- (void)nslog:(CDVInvokedUrlCommand *)command {

NSDictionary *dic = command.arguments.firstObject;

NSLog(@"%@", [dic valueForKey:@"parameter"]);

CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:nil];

[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];

}

@end

最后就是js的调用

function customPluginsButtonClick() {

cordova.exec(function (success) {

alert("123");

},function (fail) {

alert("321");

},"CustomCDVPlugin","nslog",[{"parameter":"Hello world! my name is cordova!"}]);

};

ios android混合开发框架,iOS基于Cordova框架的混合开发相关推荐

  1. 基于SSM框架图书管理系统开发与设计(附源码资料)-毕业设计

    文章目录 1. 适用人群 2. 你将收获 3.项目简介 4.技术实现 5.系统功能 5.1.管理员身份登录 5.1.1.登录 5.1.2.管理员登录首页 5.1.3.借阅管理 5.1.4.图书管理 5 ...

  2. 3588 Rockchip_基于 DRM 框架的 HDMI 开发指南

    ROCKCHIP_基于 DRM 框架的 HDMI 开发指南-1 1 简介 OVERVIEW-1 2 变量定义 VARIABLE DEFINITION -1 3 HDMI/DP 相关配置 HDMI/DP ...

  3. Android 快速开发框架:推荐10个框架

    一.  Afinal 官方介绍: Afinal是一个Android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp.通 ...

  4. webdav ios android,iWork(iOS 版):使用 WebDAV 服务

    如果您有权访问 WebDAV 服务器,则可通过 iOS 设备传输 iWork(iOS 版)文稿,例如将类似文稿拷贝到 WebDAV 服务器,或从该服务器拷贝类似文稿.按照以下步骤执行此操作. 在 iW ...

  5. 国内用户ios android比例,国内iOS、Android系统的设备总量已达到了2亿

    首先,在2012年第三季度时,国内iOS.Android系统的设备总量已达到了2亿.在今年3月的时候,这一指标只有8700万,也就是说设备在半年内增长了125%.而在设备量大增的同时,用户也变得依赖移 ...

  6. ios android md5加密,iOS中使用MD5加密

    在iOS中使用MD5加密较简单,需要引入头文件CommonCrypto/CommonDigest.h,我们单独新建一个用于MD5加密的类Encryption,此类继承NSObject. Encrypt ...

  7. ios android 手柄,升级至iOS 13系统iPhone现已支持Xbox手柄

    今天(9月20日)iOS 13系统正式推送上线,更新至iOS 13系统的iPhone设备现已可通过蓝牙支持Xbox手柄.PS4手柄.iOS设备支持Xbox手柄对于iOS平台游戏.Apple Arcad ...

  8. 潮人篮球ios android,潮人篮球ios怎么在电脑上玩?潮人篮球ios电脑版玩法教程!...

    潮人篮球ios怎么在电脑上玩呢?现在有很多小伙伴都在玩潮人篮球手游,不过相对于传统的在手机上进行游戏,很多人都倾向于新玩法,就是在电脑上玩潮人篮球.下面小编就给亲们介绍下潮人篮球ios电脑版玩法教程哈 ...

  9. 基于QT框架的软件开发

    QT入门科普 初识QT 更新到QT6: QT的许可类型 QT与C++ QT美与丑 技术选型偏重 未来发展趋势 个人发展路线 初识QT Qt 是一个1991年由Qt Company开发的跨平台C++图形 ...

  10. xamarin c#开发ios/android 应用

    最近项目需要开发手机客户端,而现在项目又是微软的项目,所以正在考虑用xamarin c#开发ios 应用,这方面的资料不是很多,下面是一些资料的汇总 等研究一段时间再写的使用心得. xamarin 的 ...

最新文章

  1. vue.js的一些事件绑定和表单数据双向绑定
  2. Linux的换网变化IP进行固定IP
  3. moia调度mysql到hive_创立打车软件Moia后,“不安分”的大众又收购一家移动支付公司PayByPhone...
  4. python学习之数据类型(int,bool,str)
  5. PostreSQL崩溃试验全记录
  6. 【华为云技术分享】智能诊断和优化,华为云DAS服务云DBA平台让您无忧运维
  7. 解决安装YouCompleteMe与Vim版本不兼容问题
  8. 全局变量反汇编与重定位
  9. lr压测mysql数据库_jmeter压测mysql数据库
  10. VB6源代码收藏页面
  11. c语言swustoj括号匹配问题,swust-oj 西南科技大学oj练习题解 150+道 - 下载 - 搜珍网...
  12. 把已经写好的Vue项目转成uni-app项目
  13. 合格的程序员精通c语言吗,只精通一门C语言的人算不算程序员?
  14. 在计算机中关闭应用程序,电脑中如何取消点击关机后出现的还需要关闭程序的提示...
  15. gitee 链接报错
  16. Python的人工智能模拟框架
  17. 期货板幅什么意思(期货涨停板什么意思)
  18. 【正本清源】关于extern、static、const的正确使用方法
  19. 【PyTorch】03数据处理
  20. ArcHydro介绍

热门文章

  1. 常用参考文献GB/T 7714, MLA ,APA格式区别
  2. 软件开发流程知识概括
  3. CIS基线合集-常用版本操作系统、数据库及中间件
  4. 自定义View实现2048
  5. 破解Photoshop CC
  6. idea java maven 打包,idea maven项目 基于idea自己打包方式 以及使用maven插件打包的三种方式...
  7. python scrapy 爬取steam游戏
  8. 小提琴1234567位置图解_小提琴的指法图
  9. Technica Engineering
  10. 易语言:游戏辅助 CF队伤“卡秒器“ 编程思路/开发者优化建议