찾다

 >  Q&A  >  본문

javascript - 클라이언트와 프런트엔드 통신에 대한 질문이 있습니까?

클라이언트는 WebViewClient类的shouldOverrideUrlLoading메서드를 사용하여 프런트엔드와 클라이언트 간의 통신을 처리합니다. 이 경우 프런트 엔드는 클라이언트의 처리 콜백을 어떻게 알 수 있습니까?
상황은 다음과 같습니다.

  1. 프런트 엔드는 현재 사용자 가져오기와 같은 특정 프로토콜의 주소를 보냅니다jsbridge://bridge/userid

  2. 클라이언트는 이 로드를 캡처하고 프런트 엔드에 값을 쓰는 등의 작업을 수행하기 시작합니다javaScript:window.userId=12121

으아악

이 시나리오에서는 어떻게 해야 하나요?

大家讲道理大家讲道理2747일 전621

모든 응답(1)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-05-16 13:29:34

    JSBridge를 이해하려면 궁극적으로 세 가지를 이해해야 합니다. 하나는 H5가 Native를 호출하는 방식, 다른 하나는 Native가 H5를 호출하는 방식, 마지막은 둘 사이의 콜백입니다.

    • H5에서 Native를 호출하는 방법은 인터넷에 있는 메소드가 모두 동일합니다. 즉, WebView가 H5 페이지를 로드하면 WebChromeClient 또는 WebviewClient 중 하나를 선택하면 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方法:

    function getUseID(userid){
    console.log(userid);
    }

    Native中拿到数据后,执行:

    webview.loadUrl(javascript:getUseID(userid););

    H5中的getUseID

    Native가 H5를 호출하는 방법은 최종 분석에서 webview.loadUrl(javascript:yourFunc(data););가 H5에 데이터를 전달하고 yourFunc를 실행하는 방법 중 하나일 뿐입니다. H5의 이 방법




    둘 사이의 콜백은 Native 또는 H5가 상대방의 호출을 처리한 후 상대방이 사용할 수 있도록 결과를 상대방에게 반환하는 것을 의미합니다. 핵심은 타임스탬프나 기타 고유 식별자, 즉 Map(UniqueID, Callback)을 사용하여 Map을 통해 호출 함수 콜백을 구성하고 이 고유 식별자 UniqueID를 상대방 기능이 실행된 후 상대방은 고유 식별자 UniqueID와 반환 데이터 data를 다시 전달한 후 이 UniqueID를 사용합니다. 호출 함수 CallBack을 찾은 다음 CallBack(data)

      를 실행하세요.
    • 설명을 보면 두 번째 지점에서 길을 잃었다는 것을 알 수 있습니다. H5에서 JS 메서드를 작성해야 합니다.

      으아아아
    • 네이티브에서 데이터를 가져온 후 다음을 실행하세요.
    • webview.loadUrl(javascript:getUseID(userid););

    • H5의 getUseID 메소드가 호출되어 실행되면 Native로부터 데이터가 성공적으로 수신됩니다
    • 완전한 JSBridge라면 위의 세 번째 사항을 고려해야 합니다.

    • Android 하이브리드를 개발 중이고 JSBridge
    가 필요합니다. 이 큰 머리 유령이 쓴 글은 다음과 같습니다. 🎜https://github.com/JerryMissT...🎜몇 개의 블로그를 추천합니다. 읽고 나면 좋아요🎜 🎜 🎜🎜http://www.cnblogs.com/dailc/...🎜🎜 🎜🎜http://blog.csdn.net/qq_23547...🎜🎜 🎜🎜http://zjutkz.net/2016/04/17/...🎜🎜 🎜

    회신하다
    0
  • 취소회신하다