終於走到了寫插件的這個地方了,插件的過程:java
1.安裝plugman插件,管理咱們的程序android
npm install -g plugman
2.建立插件項目appUpgrade,cd 到你的目標目錄下,執行以下命令:apache
plugman create --name appUpgrade --plugin_id com.caseStudy.plugin --plugin_version 0.0.1
其中com.caseStudy.plugin是java類的包名,之後會引用到。npm
執行完成後,目錄下會看到新建了appUpgrade目錄,其下游plug.xml文件,src和www目錄json
3.添加android平臺:先cd 到appUpgrade目錄,再執行以下命令api
plugman platform add --platform_name android
會在src目錄下自動建立了一個appUpgrade.java文件瀏覽器
4.修改咱們的appUpgrade.js文件app
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包,前文已提過如何加入到咱們項目的....此處不用再加,引入包名便可ionic
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(); } }
到此插件開發完成。ide
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瞭解又加深一步,就能夠分析其餘插件的代碼了!!!