前端项目通过bridge获取客户端资源,客户端直接返回response对象

公開日: 2026-07-09 09:44 252文字 2 min read

前端项目通过bridge获取客户端资源,客户端直接返回response对象常用代码模板1——基础算法常用代码模板2——数据结构统计iOS工程代码行数高数概念、公式、定理Objective-C 语法 3Objective-C 语法 2Objective-C 语法 1UIViewController 的生命周期UITableview调用reload方法时抖动问题UILabel中文带行间距的处理,限制行数,计算高度等UIButton扩大点击范围以及关于响应者链条的思考UIApplicationSwiftUI基本控件iPhone6 Plus上面神秘的缝隙iPhone 刘海机型UI适配(X、Xs、Xs Max、Xr)iOS:如何在UITableView调用reloadData刷新结束后再同步执行后续操作iOS 截取整个 scrollview 图片iOS 关于 UITextField 的字数限制Objective-C 中禁止调用指定的方法objc源码分析-runtime-classObjective-C Type EncodingsObjective-C:为什么分类中不能直接添加属性OC优缺点以及常见bugruntime——运行时简单使用当对象接收到不能处理的消息时调用的方法浅谈iOS中的weak为 UIControl 实现线程安全的 Block 事件扩展:原理与实践OC单例宏iOS常用数据类型转换OC中nil 、NULL、 Nil 、NSNull的区别Description方法和NSLog函数Block in Objective-CiOS自动化埋点的实现iOS平台编译Ogre游戏引擎库iOS:特殊符号大全iOS 网络小结iOS 沙盒与 BundleiOS 框架学习-AsyncSocketNSString的各种处理Swift Module 如何被全局引用CocoaPods组件化——OC/Swift动静态库混用COCOAPODS技巧-创建私有仓库关于NSNotificationCenter数据结构与算法解析习题2.23数据结构与算法解析习题2.19数据结构与算法解析习题2.16数据结构与算法解析习题2.14数据结构与算法解析习题2.13数据结构与算法解析习题2.12数据结构与算法解析习题2.11:二分查找数据结构与算法解析习题2.10:霍纳法则(Horner's rule)数据结构与算法解析习题2.7数据结构与算法解析习题1.3数据结构与算法解析习题1.2数据结构与算法解析习题1.1LeetCode 486 Predict the Winner(预测赢家)LeetCode 398 随机数索引LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal(由中序和后序遍历建立二叉树)LeetCode 70 爬楼梯(青蛙跳台阶)LeetCode 8 String to Integer (atoi)LeetCode 6 ZigZag Conversion(Z字转换)LeetCode 5 Longest Palindromic Substring(最长回文字串)iOS脚本打包 ipa(.app转.ipa)《什么是数学 》习题 第一章 补充《什么是数学 》习题 第一章 2 数系的无限性 数学归纳法《什么是数学 》习题 第一章 1 整数的计算Vue 的一些指令和缩写
この投稿は「日本語」では表示できません。元の投稿を表示しています。
iOSopen class URLSchemeHandler: NSObject, WKURLSchemeHandler { open func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) { guard let url = urlSchemeTask.request.url, let scheme = u

iOS

open class URLSchemeHandler: NSObject, WKURLSchemeHandler {

    open func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
        
        guard let url = urlSchemeTask.request.url, let scheme = url.scheme else { return }

        let data = try Data(contentsOf: url)
       if let response = self.createHTTPResponse(url: url, mimeType: filePathUrl.pathExtension.mimeType){
           urlSchemeTask.didReceive(response)
           urlSchemeTask.didReceive(data)
           urlSchemeTask.didFinish()
       }else{
           urlSchemeTask.didFailWithError(NSError(domain: "URLShemeHandler", code: 100, userInfo: nil))
       }

    }

    open override func createHTTPResponse(url: URL, mimeType: String, contentLength: Int = 0) -> URLResponse? {
        let headerFields: [String:String] = [
            "Content-Type": mimeType,
            "Access-Control-Allow-Origin":"*",
            "Access-Control-Allow-Methods":"GET, POST, PUT, DELETE",
            "Access-Control-Allow-Headers":"Content-Type, Authorization"
        ]
        let response = HTTPURLResponse(url: url, statusCode: 200, httpVersion: "HTTP/1.1", headerFields: headerFields)
        return response
    }
    
}

安卓 腾讯x5

webView.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        
        // 拦截特定URL并返回自定义数据
        if (url.contains("your-custom-path")) {
            try {
              // 生成自定义数据(如JSON)
              String jsonData = "{\"status\": 200, \"data\": \"Hello X5\"}";
              InputStream inputStream = new ByteArrayInputStream(jsonData.getBytes("UTF-8"));
              
              // 构造响应头
              Map<String, String> headers = new HashMap<>();
              headers.put("Access-Control-Allow-Origin", "*"); // 允许所有域
              headers.put("Access-Control-Allow-Methods", "GET, POST"); // 允许的HTTP方法
              headers.put("Content-Type", "application/json"); // 数据类型
              
              // 构造WebResourceResponse(MIME类型、编码、输入流、头信息)
              return new WebResourceResponse("application/json", "UTF-8", 200, "OK", headers, inputStream);
                
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        
        // 默认行为:不拦截,由WebView自行加载
        return super.shouldInterceptRequest(view, request);
    }
});
© 2024 - 2026 cos @cosine
Powered by theme astro-koharu · Inspired by Shoka