You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一网络下从Chrome扩展向iOS应用发送请求并获取响应

同一网络下Chrome扩展与iOS应用的通信实现方案

方案1:iOS端启动本地HTTP服务器

这是最直观的实现方式,通过HTTP请求完成单向/双向数据交互:

  • iOS端操作:
    集成轻量HTTP服务器库(比如GCDWebServer),启动服务并监听指定端口,编写接口处理请求并返回响应。示例Swift代码:
    import GCDWebServer
    
    let webServer = GCDWebServer()
    // 注册GET接口
    webServer.addHandler(forMethod: "GET", path: "/api/handleRequest", request: GCDWebServerRequest.self) { request in
        // 这里写你的请求处理逻辑
        let responseContent = "iOS已处理请求,返回响应"
        return GCDWebServerDataResponse(text: responseContent)
    }
    // 启动服务,端口设为8080
    webServer.start(withPort: 8080, bonjourName: "iOS Local Server")
    
  • Chrome扩展端操作:
    获取iOS设备的局域网IP(可以手动查看iOS的Wi-Fi详情,或者用后面的Bonjour自动发现),用fetch API发送请求。示例JS代码:
    // 替换成你的iOS设备局域网IP
    const iosServerUrl = 'http://192.168.1.105:8080/api/handleRequest';
    fetch(iosServerUrl)
      .then(res => res.text())
      .then(response => console.log('收到iOS响应:', response))
      .catch(err => console.error('请求失败:', err));
    
  • 关键配置:
    在Chrome扩展的manifest.json中添加权限:"host_permissions": ["http://*:8080/*"],允许扩展访问本地8080端口的服务。

方案2:WebSocket双向实时通信

如果需要频繁双向交互或者实时性要求高,用WebSocket更合适:

  • iOS端操作:
    用GCDWebServer或Starscream库搭建WebSocket服务器,示例代码(GCDWebServer):
    webServer.addWebSocketHandler(forPath: "/ws", protocols: nil) { webSocket in
        // 监听来自Chrome的消息
        webSocket.onMessage = { message in
            print("收到Chrome消息:", message.string ?? "")
            // 发送响应
            webSocket.send("iOS已接收:\(message.string ?? "")")
        }
        // 监听连接断开
        webSocket.onClose = { code, reason, wasClean in
            print("WebSocket连接断开")
        }
    }
    
  • Chrome扩展端操作:
    创建WebSocket连接并收发消息,示例JS代码:
    const socket = new WebSocket('ws://192.168.1.105:8080/ws');
    // 连接成功后发送请求
    socket.onopen = () => socket.send('来自Chrome扩展的请求');
    // 接收iOS响应
    socket.onmessage = (event) => console.log('iOS响应:', event.data);
    // 处理错误
    socket.onerror = (err) => console.error('WebSocket错误:', err);
    

方案3:Bonjour自动发现设备

手动输入IP太麻烦?用Bonjour(零配置网络)让Chrome扩展自动找到iOS设备:

  • iOS端操作:
    启动HTTP/WebSocket服务时注册Bonjour服务,比如GCDWebServer可以直接指定:
    // 注册_http._tcp.类型的Bonjour服务
    webServer.start(withPort: 8080, bonjourName: "iOS Local Server", bonjourType: "_http._tcp.")
    
  • Chrome扩展端操作:
    使用Chrome内置的MDNS API自动发现服务,需要在manifest.json中添加"permissions": ["mdns"],示例JS代码:
    // 开始发现_http._tcp.类型的服务
    chrome.mdns.startDiscovery("_http._tcp.");
    // 监听服务列表变化
    chrome.mdns.onServiceList.addListener((services) => {
        // 找到我们的iOS服务
        const iosService = services.find(s => s.name.includes("iOS Local Server"));
        if (iosService) {
            const requestUrl = `http://${iosService.host}:${iosService.port}/api/handleRequest`;
            fetch(requestUrl).then(res => res.text()).then(console.log);
            // 停止发现,避免重复请求
            chrome.mdns.stopDiscovery("_http._tcp.");
        }
    });
    

内容的提问来源于stack exchange,提问作者J. Day

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:06:33