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新しい注釈 を伝達できない. 1.0.3新しい注釈 である.
Web
三つの方式に分ける Vueプラグイン注入方式(いくつかの問題があり、使用を推奨しない) H 5ラベルプロトコル注入方式 htmlファイルに
プロトコルはラベルの
サポートされている は のとおりです.
な は の りである. Android
:
Gradle > v3.0
Gradle < v3.0
アンドロイドも3つのインタラクション を
する3の タイプは のとおりです.
な : Step 1, :カスタムアプリケーションで . Step 2、 Step 3、Activityのライフサイクルを のように します:
の ステータスリスニング
に、リスニング インタフェースを する に な を す.
のインタフェース の は、MainActivity.javaを してください.
IOCはjsリクエストメソッドパッケージを JSを び すメソッドインタフェース を する
の :
@ZFunction("メソッド "):JSの
@ZMethod("Listening Name"):JSの
@ZKey("パラメータ "):JSにおけるObjectパラメータキー .
@ZCmd("cmd "):
@ZJson:JSのObjectパラメータの (json).
@ZData:パラメータは です.インタフェースサービスオブジェクトインスタンスを し、 を び す.
JSオリジナル を び すは、 の は、
iOS
しばらく
Author Blog
zyao89.cn
ZWebView for Hybird Appは、モバイル端末とWebのJSブリッジフレームワークを構築し、主に多くの一般的なプロトコルの制約と定義を含む.AndroidのWebViewの方が使いやすいです.
最新の紹介
https://www.zyao89.cn/blog/article/5a97fa8b632e353ffd14d44a このサイトにメッセージを送ることができます.
Github: ZWebView.git
説明の更新
@ZJson
を追加し、修復IOCの実現方式はjsonパラメータ@ZData
を追加し、文字列を入力し、web側が受信したパラメータフォーマットは{'ZData',String}Web
三つの方式に分ける
Vue
を使用する場合は、vue-zweb
プラグインを導入して使用できます.具体的にはvue-zwebを参照
ラベルを することにより、 フレームの を することができる.プロトコルはラベルの
src
の で、アドレス で され、 なフォーマットは:zweb://
で まる.サポートされている は のとおりです.
1. zweb://__init__
な は の りである.
:
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
}
な :
ZWebView
を し、 は の り:@Override
public void onCreate()
{
super.onCreate();
ZWebInstance.init(this);
}
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);
// 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リクエストメソッドパッケージを
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
,