ionic实现自定义插件

昨天第一次写简书,感觉太生硬,有的东西只有自己懂了,没有说的和明白,还望大家见谅,今天说一下自定义ionic插件的一些心得!希望大家勿喷啊。先装一下逼吧,很多刚学的或者学了一段时间的同学,兴许还不知道ionic和cordova的区别,还有phonegap是什么东东?
通俗的讲:ionic是一款基于angularjs的html5移动app开发框架phonegap就是一款可以打包并且可以让js调用原生的移动app框架
问题来了? 那我不用命令安装ionic 可以使用ionic开发app吗?答案是可以得。

1.环境配置

Node.js的安装,ionic的安装这里不再赘述,默认大家都安装配置好了环境。
1.1. 安装plugman新建插件,终端输入

npm install -g plugman

安装时如果出现Error: EACCES: permission denied,说明没有权限,只需要在命令前面加上 sudo npm install -g plugman 即可,安装命令与安装结果如下:


屏幕快照 2016-06-22 上午10.25.45.png

2. 新建一个自定义插件DZFPlugin,用弹框显示我们的内容

plugman create --name <pluginName> --plugin_id <pluginID> --plugin_version <version> [--path <directory>] [--variable NAME=VALUE]
把其中的<pluginName>替换为 DZFPlugin;
<pluginID> 替换为 cordova.plugin.DZFPlugin
<version> 替换为 0.0.1
[--path <directory>] [--variable NAME=VALUE] 这两个是可选参数,这里不写了。这样会在当前目录下(desktop)创建一个新的目录DZFPlugin

plugman create --name DZFPlugin --plugin_id cordova.plugin.DZFPlugin --plugin_version 0.0.1

执行完命令之后会在当前目录生成一个文件夹,我但前设置的是桌面,文件加目录如下


屏幕快照 2016-06-22 上午10.33.36.png

接下来向DZFPlugin项目中添加Android和ios平台,把platform替换为android和ios即可,首先进入插件文件路径,cd DZFPlugin

plugman platform add --platform_name <platform>

最终在终端输入的命令如下

plugman platform add --platform_name android
plugman platform add --platform_name ios
平台添加完毕,DZFPlugin中src文件夹下会多出来android和ios两个文件夹,结果如下:

屏幕快照 2016-06-22 上午10.40.28.png

先看配置文件:plugin.xml

解释一下关键的几个元素:
(1) id:插件标识,即一开始我们创建插件时输入的cordova.plugin.DZFPlugin
(2) name:插件名称,即新建插件是输入的DZFPlugin
(3) js-module:对应的javascript文件路径,src属性指向www/DZFPlugin.js
(4) platform:支持的平台,就是刚才我们这是刚才我们通过“ plugman platform add --platform_name ios ”添加进来的,这里是安卓和iOS的插件配置信息。

BDEACB8C-49B5-460B-A196-009D1712C848.png

接下来咱们在介绍一下插件目录中www/xxx.js文件中几个关键字信息:

步骤很简单:
第一步是引入cordova下的exec库;
第二步是执行插件方法

exec(success, error, "DZFPlugin", "coolMethod", [arg0]);
success:调用成功时的回调方法
error :调用失败时的回调方法
"DZFPlugin" :是插件的名称
"coolMethod" :执行插件里的方法,即原生的方法
[arg0]:可选参数,执行方法的参数数组
最后的js文件方法如下,由于只是做了一个demo,所以原生方法名字还是用的插件自带原生文件的类名,秩序自己替换成自己定义的原生方法名字即可。

D1602C63-BE59-42DD-9F00-C147EE118A59.png

3.安装自定义插件

这里用事先创建好的ionic项目进行自定义插件的测试,具体ionic项目的创建,请看我的第一篇简书,打开终端

cd DZFPluginDemo -------切换到项目目录下
cordova plugin add plugin-id或者插件路径 ---------本项目是插件的本地路径,是否安装成功请见下图,以iOS为例。

42A14504-8670-4F66-8D80-36F4457FADB0.png

此时工程项目的plugins下会看到自己的插件,前提是你已经安装成功了!,距离胜利只剩一小步了!!

70AC0438-CC86-4C94-9E9E-67DE626C5129.png

接下来打开项目目录下的platforms/ios/DZFPluginDemo工程,最先应该看的两个地方就是Staging目录下的config.xml和www目录下的cordova_plugins.js文件,如果和下图一致,表明插件已经注册成功了!cordova_plugins.js文件中的clobbers键对应的值应该是配置插件时pluign.xml文件的划横线的名字,否则提示找不到方法。

0735336E-B148-45C7-8811-2220FDF6DEDF.png
0C7477DC-B3EB-4E5A-92A3-54D6F34FCA47.png

打开DZFPluginDemo目录下的staging/www/templates/tab-dash.html(项目的首页添加一个按钮),注意:如果tab-dash.html编辑不了,在终端输入sudo chmod -R 777 .即可解决问题,前提是已经进入项目目录,编辑templates文件夹下的tab-dash.html,添加一个按钮,便于测试自定义插件是否可用如下。


58BDB8F6-1D3B-4F61-A07E-B7638F963888.png

然后编辑staging/www/js/controller.js文件,方框中的名字和cordova_plugins.js文件中clobber对应的值是一样的。


D82CC401-3120-47DC-92A2-A78559A425FC.png

运行项目
Simulator Screen Shot 2016年6月22日 下午3.45.19.png
Simulator Screen Shot 2016年6月22日 下午3.45.51.png

至此为止,自定义插件已完成,可能有些地方说的不是很清楚,还有很多不足,感觉自己的语言的组织能力太差了,希望大家多给与评论,便于我的改正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容

  • ionic是一个运行在webview上的应用,但是很多功能js搞不定,免不了本地代码的支持。ionic在nativ...
    李泽1988阅读 3,031评论 0 3
  • 一、Cordova的基础点 在混合式应用中,我们通过现有的Cordova插件,可以轻松的在 H5 上调用手机nat...
    IT晴天阅读 6,604评论 3 11
  • 前言:用cordova开发hybrid app的过程中,由于是html5开发的app,在手机上很多权限受限制...
    京东内部优惠券阅读 5,346评论 5 65
  • 之前用Android原生写过一个录屏直播、点播的客户端,现打算将用的较多的点播功能移植到Ionic2项目里。正好熟...
    charles0427阅读 1,339评论 0 1
  • 很庆幸自己今晚去了公园,本是想看看换新后会有何改变,到那之后却发现,自己躁动不安的心因为这个再普通不过的地方平静了...
    听风的姑凉阅读 135评论 10 0