클라이언트는 WebViewClient
类的shouldOverrideUrlLoading
메서드를 사용하여 프런트엔드와 클라이언트 간의 통신을 처리합니다. 이 경우 프런트 엔드는 클라이언트의 처리 콜백을 어떻게 알 수 있습니까?
상황은 다음과 같습니다.
프런트 엔드는 현재 사용자 가져오기와 같은 특정 프로토콜의 주소를 보냅니다jsbridge://bridge/userid
클라이언트는 이 로드를 캡처하고 프런트 엔드에 값을 쓰는 등의 작업을 수행하기 시작합니다javaScript:window.userId=12121
이 시나리오에서는 어떻게 해야 하나요?
JSBridge를 이해하려면 궁극적으로 세 가지를 이해해야 합니다. 하나는 H5가 Native를 호출하는 방식, 다른 하나는 Native가 H5를 호출하는 방식, 마지막은 둘 사이의 콜백입니다.
H5에서 Native를 호출하는 방법은 인터넷에 있는 메소드가 모두 동일합니다. 즉, WebView가 H5 페이지를 로드하면
WebChromeClient
또는WebviewClient에서 해당 메소드를 호출합니다. code> 중 하나를 선택하면 H5 데이터를 가로채서 처리를 위해 Native에 넘겨줍니다
WebChromeClient
或者是WebviewClient
中的方法,选取其中的一个,来截取H5的数据,交由Native处理Native如何调用H5,归根结底就是一条,
webview.loadUrl(javascript:yourFunc(data););
会把数据传给H5并执行H5中的yourFunc
这个方法两者之间的回调,即Native或者H5处理好对方的调用后,把结果返回给对方,供对方使用。本质就是把调用函数Callback使用时间戳或者其他的唯一标识通过Map组织起来,即
Map(UniqueID,Callback)
,并把此唯一标示UniqueID
传给对方函数,对方执行完毕后,会把这个唯一标示UniqueID
和返回数据data
传回来,然后通过这个UniqueID
找到调用函数CallBack
,然后执行CallBack(data)
从你的描述中可以知道,你现在是迷失在第二点上了,你需要在H5中写一个JS方法:
Native中拿到数据后,执行:
webview.loadUrl(javascript:getUseID(userid););
H5中的
Native가 H5를 호출하는 방법은 최종 분석에서getUseID
webview.loadUrl(javascript:yourFunc(data););
가 H5에 데이터를 전달하고yourFunc를 실행하는 방법 중 하나일 뿐입니다. H5의
이 방법둘 사이의 콜백은 Native 또는 H5가 상대방의 호출을 처리한 후 상대방이 사용할 수 있도록 결과를 상대방에게 반환하는 것을 의미합니다. 핵심은 타임스탬프나 기타 고유 식별자, 즉
Map(UniqueID, Callback)
을 사용하여 Map을 통해 호출 함수 콜백을 구성하고 이 고유 식별자UniqueID
를 상대방 기능이 실행된 후 상대방은 고유 식별자UniqueID
와 반환 데이터data
를 다시 전달한 후 이UniqueID
를 사용합니다. 호출 함수CallBack
을 찾은 다음CallBack(data)
를 실행하세요.-
네이티브에서 데이터를 가져온 후 다음을 실행하세요.-
H5의 -
Android 하이브리드를 개발 중이고 JSBridge
가 필요합니다. 이 큰 머리 유령이 쓴 글은 다음과 같습니다. 🎜https://github.com/JerryMissT...🎜몇 개의 블로그를 추천합니다. 읽고 나면 좋아요🎜 🎜 🎜🎜http://www.cnblogs.com/dailc/...🎜🎜 🎜🎜http://blog.csdn.net/qq_23547...🎜🎜 🎜🎜http://zjutkz.net/2016/04/17/...🎜🎜 🎜설명을 보면 두 번째 지점에서 길을 잃었다는 것을 알 수 있습니다. H5에서 JS 메서드를 작성해야 합니다.
으아아아webview.loadUrl(javascript:getUseID(userid););
getUseID
메소드가 호출되어 실행되면 Native로부터 데이터가 성공적으로 수신됩니다완전한 JSBridge라면 위의 세 번째 사항을 고려해야 합니다.