ZWebView使用簡単な紹介-Android

6838 ワード

ZWebView
ZWebView for Hybird Appは、モバイル端末とWebのJSブリッジフレームワークを構築し、主に多くの一般的なプロトコルの制約と定義を含む.AndroidのWebViewの方が使いやすいです.
最新の紹介
https://www.zyao89.cn/blog/article/5a97fa8b632e353ffd14d44a このサイトにメッセージを送ることができます.
Github: ZWebView.git
説明の更新
  • 1.0.0 Androidライブラリzweb
  • の作成
  • 1.0.1簡単な問題を更新
  • 1.0.2新しい注釈@ZJsonを追加し、修復IOCの実現方式はjsonパラメータ
  • を伝達できない.
  • 1.0.3新しい注釈@ZDataを追加し、文字列を入力し、web側が受信したパラメータフォーマットは{'ZData',String}
  • である.
    Web
    三つの方式に分ける
  • Vueプラグイン注入方式(いくつかの問題があり、使用を推奨しない)
  • Vueを使用する場合は、vue-zwebプラグインを導入して使用できます.具体的にはvue-zwebを参照
  • H 5ラベルプロトコル注入方式
  • htmlファイルにラベルを することにより、 フレームの を することができる.
    プロトコルはラベルのsrcの で、アドレス で され、 なフォーマットは:zweb://で まる.
    サポートされている は のとおりです.
    1. zweb://__init__
    

    な は の りである.
    
    
  • Android
    :
    Gradle > v3.0
    implementation 'com.zyao89.view:zweb:1.0.2'
    

    Gradle < v3.0
    compile 'com.zyao89.view:zweb:1.0.2'
    

    アンドロイドも3つのインタラクション を
    する3の タイプは のとおりです.
    public enum InjectionMode
    {
        // vue    ,    vue-zweb.js    :
        VuePlugin,
        //     :zweb://    :
        Protocol,
        //        
        Normal
    }
    

    な :
  • Step 1, :カスタムアプリケーションでZWebViewを し、 は の り:
  • .
    @Override
    public void onCreate()
    {
        super.onCreate();
    
        ZWebInstance.init(this);
    }
    
  • Step 2、ZWebConfigプロファイルを し、ZWebオブジェクトインスタンスを します.
  • String MAIN_HTML = "file:///android_asset/index.html";
    
    // 1.       ,      URL
    ZWebConfig config = new ZWebConfig.Builder(ZWebConstant.MAIN_HTML_TEST)
        //       
        .setOnStateListener(this)
        //       UI  
        .setNativeMethodImplement(this)
        //            
    //  .setOnSpecialStateListener(this)
        //       
        .setInjectionMode(InjectionMode.VuePlugin)
        //         JS(    )
        .autoInjectFramework()
        //         
        .autoInjectExtendsJS()
        //    assets  js    
    //  .addInjectJSAssetsFile("js/test.js")
        //    raw  js    
    //  .addInjectJSRawFile(R.raw.index_test)
        .build();
    
    // 2.   ZWeb    .
    mZWebInstance = ZWebInstance.createInstance(config);
    
    
  • Step 3、Activityのライフサイクルを のように します:
  • // mRootView   ViewGroup   (  )
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        //...
        mZWebInstance.onActivityCreate(mRootView);
        //...
    }
    
    //             
    @Override
    public void onBackPressed()
    {
        if (!mZWebInstance.onActivityBack())
        {
            super.onBackPressed();
        }
    }
    
    @Override
    protected void onPause()
    {
        mZWebInstance.onActivityPause();
        super.onPause();
    }
    
    @Override
    protected void onResume()
    {
        mZWebInstance.onActivityResume();
        super.onResume();
    }
    
    @Override
    protected void onStart()
    {
        mZWebInstance.onActivityStart();
        super.onStart();
    }
    
    @Override
    protected void onStop()
    {
        mZWebInstance.onActivityStop();
        super.onStop();
    }
    
    @Override
    protected void onDestroy()
    {
        mZWebInstance.onActivityDestroy();
        super.onDestroy();
    }
    

    の ステータスリスニング
    に、リスニング インタフェースを する に な を す.
    /**
    *           
    *
    * @param zWebHandler
    * @param width  
    * @param height  
    */
    void onZWebCreated(IZWebHandler zWebHandler, int width, int height);
    
    /**
    *   (JS           )
    *
    * @param zWebHandler
    * @param errorCode    
    * @param message     
    */
    void onZWebException(IZWebHandler zWebHandler, long errorCode, String message);
    
    /**
    *       
    *
    * @param zWebHandler
    * @param url           
    * @param method          
    * @param data          
    * @param type            
    * @param controller
    */
    void onZWebRequire(IZWebHandler zWebHandler, String url, String method, String data, String type, IZRequireController controller);
    
    /**
    *       
    *
    * @param zWebHandler
    * @param cmd     
    * @param data   
    */
    void onZWebMessage(IZWebHandler zWebHandler, String cmd, String data, IZMessageController controller);
    
    /**
    * JS  
    *
    * @param zWebHandler
    */
    void onZWebDestroy(IZWebHandler zWebHandler);
    
    /**
    * JS      ,         
    *
    * @param zWebHandler
    * @param type          
    * @param msg           
    */
    void onZWebLog(IZWebHandler zWebHandler, String type, String msg);
    

    のインタフェース の は、MainActivity.javaを してください.
    IOCはjsリクエストメソッドパッケージを
  • JSを び すメソッドインタフェース
  • を する
    public interface RequireService
    {
        @ZMethod("a") // callReceiver
        boolean callA(@ZKey("KeyA") String a, @ZKey("KeyB") String b, @ZKey("Time") long time);
    
        @ZFunction("init")
        boolean init(@ZKey("A") String a, @ZKey("B") String b, @ZKey("C") int c);
    
        @ZMethod(ZMethodName.ON_READY)
        void initParam(@ZKey("Msg") String msg, @ZKey("Skin") int skin, @ZKey("Color") int color);
    
        @ZFunction(ZFunctionName.REFRESH)
        void refresh();
    
        @ZFunction("newInit")
        boolean newInit(@ZJson String oJson);
    
        @ZFunction("newInit2")
        boolean newInit2(@ZData String str);
    }
    

    の :
    @ZFunction("メソッド "):JSのZWebSDK.extends(' ', function(oData){}); メソッドを び すための び しです.
    @ZMethod("Listening Name"):JSのZWebSDK.on(' ', function(oData){}); Listeningのメソッド び しに します.
    @ZKey("パラメータ "):JSにおけるObjectパラメータキー .
    @ZCmd("cmd "):onZWebMessageメソッドコールバックで されるcmdパラメータのマッピング. な い はDemoを にすることができます.(Messageに してマッピング を う に します).
    @ZJson:JSのObjectパラメータの (json).
    @ZData:パラメータは です.
  • インタフェースサービスオブジェクトインスタンスを し、
  • を び す.
    mRequireService = mZWebInstance.create(RequireService.class);
    
    mRequireServiceによって される を して、JSが び される. のようになります.
    mRequireService.callA("         。。。", " A   !", time);
    

    JSオリジナル を び す
  • は、 のvoid onZWebMessage(IZWebHandler zWebHandler, String cmd, String data, IZMessageController controller);を して を し、 を で す.パラメータcmd: されたコマンド .パラメータdata: されたパラメータ.controller: の が されます.あるいはcontroller.parseMessage(this.mParseMessage);を いて を う.
  • は、 @JavascriptInterface を いて される.フレームワークはZWebConfigでsetExposedName (String exposedName);の を し、オリジナルのインタフェースプロトコル を することができる.そして、mZWebInstance.addJavascriptInterface(object);を いて への を う.

  • iOS
    しばらく
    Author Blog
    zyao89.cn :Zyao89; , ; :https://www.zyao89.cn