apklug插件託管服務開發教程之按條件查詢雲端插件-01

注:本文是基於託管服務TuoCloudService1.0.0講解的 項目地址爲http://git.oschina.net/plug/ApkplugCloudServiceDemo java

 

一,插件託管服務支持的功能 android

      v1.0.0支持的功能以下: git

        注:它們都是以OSGI服務對外提供服務的,關於OSGI可百度查詢,但同時咱們提供模板代碼,咱們但願你們能夠利用模板代碼漸進式的學習  <apkplug中OSGI服務基本原理> 服務器

        1.插件託管: 網絡

            開發者可將宿主應用與插件上傳到服務器上,並隨意綁定宿主與插件的對應關係。 app

        2.客戶端多條件查詢:  框架

            OSGI服務名:"com.apkplug.service.SearchApp.appSearch" 工具

            目前支持的插件查詢條件有 插件名(appname) 設置的關鍵詞(b_keywords) 可按插件添加日期排序 post

            注:插件必須與宿主綁定纔可被查詢到 學習

        3.插件版本狀態查詢:

            OSGI服務名:com.apkplug.service.update.checkupdate

           可批量查詢該宿主對應的插件版本狀態

        4.插件文件下載:

            OSGI服務名:"com.apkplug.service.download.AppDownload"

            經過查詢(2)或插件版本更新功能(3)可獲取appBean,經過它可下載插件文件。

二,宿主應用集成插件託管服務

    1)插件託管服務是一個jar包咱們只須要將其放置於宿主文件夾的libs目錄中便可。如圖

    

    2)將插件託管的OSGI服務註冊到apkplug框架中

      詳細代碼在 com.apkplug.cloudservicedemo.ProxyApplication 類中  

try{
     //com.apkplug.appServiceManager 爲TuoCloudService1.0.0.jar包提供的插件託管服務啓動BundleActivator
     List activators=new java.util.ArrayList<BundleActivator>();
     //將服務加入框架,框架將在啓動時啓動這些服務
      activators.add(new appServiceManager());
     frame=FrameworkFactory.getInstance().start(activators,this,new MyProperty(this.getApplicationContext()));
    }catch (Exception ex){
     System.err.println("Could not create : " + ex);
     ex.printStackTrace();
     int nPid = android.os.Process.myPid();
     android.os.Process.killProcess(nPid);
}

三, 使用插件託管服務接口查詢

    上一步咱們將託管服務已經所有註冊到apkplug框架裏面了,因此當使用時只須要找到服務,以下爲模板代碼:

    注:代碼位置  com.apkplug.cloudservicedemo.activity.SearchActivity

/**
* appSearch 插件搜索服務
* @param context  插件上下文
* @param bean     查詢條件填充 bean
* @param callback 查詢結果回調接口
*/
public void search(BundleContext context,appSearchBean bean,AppSearchCallBack callback){
    ServiceReference reference=context.getServiceReference(appSearch.class.getName());
    if(null!=reference){
    	appSearch service=(appSearch)context.getService(reference);
    	if(service!=null){
    		service.search(bean,callback);
    	}
    	context.ungetService(reference);
    }
 }


    以上有兩個須要咱們填充

    appSearchBean bean 是插件條件bean ,咱們能夠經過填充它來設置一些查詢條件

    AppSearchCallBack callback 查詢過程或結果將經過該接口返回

  

public void updataDate(BundleContext context){
    bean=new appSearchBean();
    //按插件被添加到分組(宿主)的時間逆序查詢
     bean.setG_order(appSearchBean.order_desc);
    //插件的關鍵詞keyword
    bean.setB_keywords("工具");
    bean.setPagenum(10);
    bean.setPage(0);
    //查詢
     search(context,bean,new impAppSearchCallBack());
}
class impAppSearchCallBack implements AppSearchCallBack{
	public void onFailure(int arg0, final String arg1) {
		//服務查詢失敗
	}
	public void onSuccess(int stutas, CallBackMSG msg,appSearchBean arg2) {
		//服務查詢成功
         		if(stutas>=0){
			if(msg.getStutes()>=0){
				//查詢正確
				//獲取查詢到的插件
				List<appBean> aps=(List)msg.getMsg();
			}else{
				//查詢條件異常
			}
		}else{
			//網絡異常
		}
	}  
}

注:查詢完成後返回的appSearchBean arg2能夠獲取到該條件下服務端插件整體數量以及當前返回

相關文章
相關標籤/搜索