终于走到了写插件的这个地方了,插件的过程:

1.安装plugman插件,管理我们的程序

npm install -g plugman

2.创建插件项目appUpgrade,cd 到你的目标目录下,执行如下命令:

plugman create --name appUpgrade --plugin_id  com.caseStudy.plugin  --plugin_version 0.0.

其中com.caseStudy.plugin是java类的包名,以后会引用到。

执行完成后,目录下会看到新建了appUpgrade目录,其下游plug.xml文件,src和www目录

3.添加android平台:先cd 到appUpgrade目录,再执行如下命令

plugman platform add --platform_name android

会在src目录下自动创建了一个appUpgrade.java文件

4.修改我们的appUpgrade.js文件

cordova.define("cordova/plugins/appUpgrade",function(require, exports, module)
{
//1.加载需要的组件
var exec = require("cordova/exec");
//2.定义js类对象
var appUpgrade = function() {};
//3.添加js类对象的方法,url为api版本检查地址
appUpgrade.prototype.downLoad = function(apiUrl,successCallback, errorCallback)
{
if (typeof errorCallback != "function")
{
console.log("error");
return
} if (typeof successCallback != "function")
{
console.log("error");
return
}
//4.调用appUpgrade.java类的downLoad方法,参数为apiUrl
exec(successCallback, errorCallback, 'appUpgrade', 'downLoad',[ { url:apiUrl } ] );
}; //5.设置插件到exports中
var appUpgrade = new appUpgrade();
module.exports = appUpgrade; }); if(!window.plugins)
{
window.plugins = {};
}
if (!window.plugins.appUpgrade)
{
window.plugins.appUpgrade = cordova.require("cordova/plugins/appUpgrade");
}

5.appUpgrade.java类功能的改写,此处使用了开源的代码 com.shelwee.update.UpdateHelper包,前文已提过如何加入到我们项目的....此处不用再加,引入包名即可

package com.caseStudy.plugin;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
//add new import jar
import com.shelwee.update.UpdateHelper;
import android.app.Activity;
import android.content.Context; public class appUpgrade extends CordovaPlugin
{
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException
{
if (action.equals("downLoad"))
{
final JSONObject options = args.getJSONObject(0);
final String url = options.getString("url");
this.downLoad(url, callbackContext);
return true;
}
else
{
callbackContext.success("there is no downLoad method in appUpgrade.java class");
return false;
}
} private void downLoad(String url, CallbackContext callbackContext)
{
callbackContext.success("invoke downLoad method success,start to check...");
UpdateHelper updateHelper = new UpdateHelper.Builder(cordova.getActivity())
.checkUrl(url)
.isAutoInstall(true)
.build();
updateHelper.check();
}
}

到此插件开发完成。

6.插件部署到app,cd到我们自己的ionic app项目目录下,执行如下命令:

cordova plugin add 你的文件路径/appUpgrade

这样会加载到我们的项目中,在plugin目录下可以看到我们的插件名appUpgrade

7.app程序调用插件的方法,不需要指明任何依赖,下面的代码可以放在button事件中,

window.plugins.appUpgrade.downLoad(appCheckVersionUrl,function(data){ console.log(data);  },function(error){ console.log(error); alert(error); });

插件已部署完成,似乎在浏览器中无法查看到插件的效果,需要打包成apk安装到手机上

8.执行命令:ionic build android

如果程序没错,成功生成apk;有错的话,需要检查我们的java代码,移除插件重新加入等,这个自己遇见了多次,代码才整理成功。

9.移除插件的命令是:

cordova plugin add path/to/your/plugin/dir

经过对插件的摸索,对ionic了解又加深一步,就可以分析其他插件的代码了!!!

Ionic app升级插件开发的更多相关文章

  1. 【ionic App问题总结系列】ionic 如何更新app版本

    ionic 如何进行自动更新 ionic App更新有两种方式:第一种是普通的从远程下载apk,安装并覆盖旧版本.另外一种就是采用替换www文件夹的内容,实现应用内更新,而无需下载安装apk. 这篇文 ...

  2. 方法:怎么用ionic命令行调试你的ionic app

    官网上有很详细的解说  http://blog.ionic.io/live-reload-all-things-ionic-cli/ 下面说说我自己的调试过程(android版): 首先用命令行进入你 ...

  3. Flutter项目之app升级方案

    题接上篇的文章的项目,还是那个空货管理app.本篇文章用于讲解基于Flutter的app项目的升级方案. 在我接触Flutter之前,做过一个比较失败的基于DCloud的HTML5+技术的app,做过 ...

  4. ionic app打包和签名

    ionic app打包和签名 1.首先在项目根目录执行  ionic platform add android  生成Android平台. 2.配置应用签名:在根目录下执行以下命令 keytool - ...

  5. Ionic App之国际化(3) json数组的处理

    接上一篇Ionic App之国际化(2) json数组的处理 之后,如何处理json数据长度的问题,目前的一个折中方法是翻译长度字段. 多语言文件内容: "MyLa": { &qu ...

  6. Ionic App之国际化(2) json数组的处理

    在Ionic App值国际化(1)中我们实现了对单个参数的多语言处理,下面开始如何进行数组的处理. 1.在我们的多语言文件中设置要访问的json数组,en.json和zh.json,此处就以en.js ...

  7. Ionic app 上传图片之webApi接口

    App上传图片对应的webApi服务端是怎么处理的呢? using System; using System.Collections.Generic; using System.Diagnostics ...

  8. App升级iOS7体会

    本文转自App升级iOS7体会. xcode5 GM版已经发布,虽然还是pre-release版,但离最终版不远了.对于没有用到新特性的app面临的最大问题就是UI的变化.Apple提供了UI Tra ...

  9. [Ionic2] Device Interaction in an Ionic App with Cordova Plugins

    In this lesson, we are going to learn how to interact with native components through Cordova plugins ...

随机推荐

  1. Tsung CentOS 操作系统下搭建tsung性能测试环境_Part 1

    CentOS 操作系统下搭建tsung性能测试环境_Part 1 by:授客 QQ:1033553122 步骤1.下载软件安装包 CentOS-6.0-x86_64-bin-DVD1.iso jdk- ...

  2. recovery 升级过程LED灯闪烁

    Android设备在进入recovery升级的过程,我们在屏幕上面可以看到升级的机器人动画,以及升级的进度显示.这仅限于有屏幕的设备,比如平板PAD,电视TV等,对与没有屏幕的盒子BOX,那么在不接入 ...

  3. ORACLE11g下如何利用SQL DEVELOPER连接上数据库

    最近在学习数据库的相关内容,在sqlplus敲了几天命令行窗口后,想尝试一下用sql developer 连接上数据库但一直没有实现.在网上查询了相关资料后现在终于弄好了,就来写下此篇博文与大家分享! ...

  4. JMeter—逻辑控制器(六)

    参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第一节JMeter逻辑控制器 JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套 ...

  5. Linux MySql 安装与配置

    为什么选择MySQL数据库? 毫无疑问,绝大多数的使用linux操作系统的大中小型互联网网站都在使用MySQL作为其后端的数据库存储,从大型的BAT门户,到电商平台,分类门户等无一例都使用MySQL数 ...

  6. windows server服务器上mysql远程连接失败的坑

    windows server服务器上mysql远程连接失败的坑 背景:趁这阿里云活动,和朋友合伙买了个服务器,最坑的是没想到他买的是windows Server的,反正便宜,将就着用吧,自己装好了wa ...

  7. SQL 三范式

    第一范式:无重复的列,一列只能包含一个字段 第二范式:主键约束,一行只能被唯一标识 第三范式:非主键字段要严格依赖于主键字段

  8. Nginx:413 Request Entity Too Large

    现象:在 Post 文件的时候遇到413 错误 :Request Entity Too Large: 原因:Nginx 限制了上传文件的大小,需在Nginx中修改/增加允许的最大文件大小: 操作:编辑 ...

  9. 深度学习word embedding猜测性别初探

    根据用户的一些特征数据,如果能推测出用户的性别借此提高产品的服务质量.广告的精准性等都是极好的. 机器学习方法有很多,而且一般都可以达到不错的效果,比如svm或神经网络等. 本文使用的代码参考——&l ...

  10. Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩