For AI agents: the complete documentation index is available at /next/zh/llms.txt, the full documentation bundle is available at /next/zh/llms-full.txt, and this page is available as Markdown at /next/zh/api/lynx-devtool-native-api/lynx-base-inspector-owner/invoke-cdp-from-sdk.md.
Lynx
  • 简体中文
  • invokeCDPFromSDK

    向 DevTool 发送一条 CDP Method,并异步接收其返回结果。

    可以和 DevTool 桌面应用 同时使用,互不干扰。

    语法

    iOS

    LynxBaseInspectorOwner.h
    - (void)invokeCDPFromSDK:(NSString *)msg withCallback:(CDPResultCallback)callback;

    Android

    LynxBaseInspectorOwner.java
    void invokeCDPFromSDK(final String cdpMsg, final CDPResultCallback callback);

    参数说明

    • msg / cdpMsg: 要发送的消息,符合 CDP Method 格式的 JSON 字符串。
    • callback: 符合 CDPResultCallback 定义的回调,用于接收返回结果。

    请求数据格式

    JSON 格式的字符串。

    字段类型说明
    idnumber消息 ID
    methodstringMethod 名称,请参考 CDP
    paramsobjectMethod 参数,请参考 CDP

    例如,DOM.getDocument 的请求数据如下:

    {
      "id": 1,
      "method": "DOM.getDocument",
      "params": {}
    }

    使用示例

    使用步骤

    1. 实现 CDPResultCallback
    2. 获取 LynxBaseInspectorOwner 实例
    3. 调用 invokeCDPFromSDK 方法,发送消息。

    代码示例

    下列示例代码展示了在 LynxView 加载成功后,调用 DOM.getDocument 这个 CDP Method 的完整流程。

    iOS

    ViewController.m
    #import <Lynx/LynxView.h>
    #import <Lynx/LynxBaseInspectorOwner.h>
    
    @interface LynxViewLifecycleClient : NSObject <LynxViewLifecycle>
    @property(nonatomic, weak) LynxView* lynxView;
    @end
    
    @implementation LynxViewLifecycleClient
    
    - (void)lynxView:(LynxView *)view didLoadFinishedWithUrl:(NSString *)url {
      [self invokeCDPMethod];
    }
    
    - (void)invokeCDPMethod {
      __strong LynxView* view = self.lynxView;
      id<LynxBaseInspectorOwner> owner = [view baseInspectorOwner];
      NSString *method = @"{\"id\":1,\"method\":\"DOM.getDocument\",\"params\":{}}";
      [owner invokeCDPFromSDK:method withCallback:^(NSString* result){
               NSLog(@"CDPResultCallback: %@", result);
             }];
    }
    
    @end
    
    @implementation ViewController {
      LynxViewLifecycleClient *_client;
    }
    
    - (void)viewDidLoad {
      [super viewDidLoad];
    
      // ...
    
      _client = [LynxViewLifecycleClient new];
      _client.lynxView = lynxView;
      [lynxView addLifecycleClient:_client];
    }
    
    @end

    Android

    MainActivity.java
    import android.util.Log;
    
    import com.lynx.devtoolwrapper.CDPResultCallback;
    import com.lynx.devtoolwrapper.LynxBaseInspectorOwner;
    import com.lynx.tasm.LynxView;
    import com.lynx.tasm.LynxViewClient;
    
    public class MainActivity extends Activity {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ...
    
        lynxView.addLynxViewClient(new LynxViewClient() {
          @Override
          public void onLoadSuccess() {
            invokeCDPMethod(lynxView);
          }
        });
      }
    
      private void invokeCDPMethod(LynxView lynxView) {
        LynxBaseInspectorOwner owner = lynxView.getBaseInspectorOwner();
        if (owner == null) {
          return;
        }
        String method = "{\"id\":1,\"method\":\"DOM.getDocument\",\"params\":{}}";
        owner.invokeCDPFromSDK(method, new CDPResultCallback() {
          @Override
          public void onResult(String result) {
            Log.i("MainActivity", "CDPResultCallback: " + result);
          }
        });
      }
    }

    兼容性

    LCD tables only load in the browser

    除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。