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

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. Java网络编程--套接字Socket

    一.套接字Socket IP地址标志Internet上的计算机,端口号标志正在计算机上运行的进程(程序). 端口号被规定为一个16位的0--65535之间的整数,其中,0--1023被预先定义的服务通 ...

  2. (后台)There is already 'jy.controller.jyadmin.JyDealerPackingReturnController' bean method

    项目报了一个错误,百度翻译了一下: “我已经有jy.controller.jyadmin.jydealerpackingreturncontroller豆方法公共org.springframework ...

  3. Openjdk 安装 on centos7

    本文演示如何在CentOS7上安装openjdk. 1 准备工作 1.1 查看可安装的版本 $ yum -y list java-1.8* # 列出当前可用的安装版本 Available Packag ...

  4. [20180413]热备模式相关问题2.txt

    [20180413]热备模式相关问题2.txt --//上午测试热备模式相关问题,就是如果打开热备模式,如果中间的归档丢失,oracle在alter database end   backup ;时并 ...

  5. Mvc检查图片格式后上传

    /// <summary> /// 检查是否文件是否图片并保存 /// </summary> /// <param name="file">文件 ...

  6. oracle count函数

    用来返回查询的行数. 当指定distinct时,不能接order_by_clause: 如果指定表达式,count返回表达式不为空的值: 当指定*号时,它返回所有行,含重复行和空值.count从不返回 ...

  7. 自己动手写waf指纹识别

    import requests import re def target_url(scan_url): xssstring = '<script>alert(1)</script&g ...

  8. 17秋 软件工程 团队第五次作业 Alpha Scrum9

    17秋 软件工程 团队第五次作业 Alpha Scrum9 今日完成的任务 世强:APP后端部门申请状态: 港晨:主页面代码实现: 树民:完善超级管理员web后端: 伟航:设置页面和侧边栏的原型: 陈 ...

  9. 17秋 软件工程 Alpha 事后诸葛亮会议

    题目: 团队作业--Alpha冲刺 17秋 软件工程 Alpha 事后诸葛亮会议 关于评价与建议的反馈 评价1:管理部门我觉得对我已经用处不大了不过对新生用处很大.像学长说的一样,里面不是流程很懂但是 ...

  10. CefSharp的一些初始化操作

    if (!CefSharp.Cef.IsInitialized) { var setting = new CefSharp.CefSettings { Locale = "zh-CN&quo ...