Ionic app升級插件開發

終於走到了寫插件的這個地方了,插件的過程: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瞭解又加深一步,就能夠分析其餘插件的代碼了!!!

相關文章
相關標籤/搜索