CustomeSchemeHandler.swift 1.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
//
//  CustomeSchemeHandler.swift
//  flutter_downloader
//
//  Created by Lorenzo Pichilli on 25/10/2019.
//

import Flutter
import Foundation
import WebKit

@available(iOS 11.0, *)
class CustomeSchemeHandler : NSObject, WKURLSchemeHandler {
    func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
        let inAppWebView = webView as! InAppWebView
        if let url = urlSchemeTask.request.url, let scheme = url.scheme {
            inAppWebView.onLoadResourceCustomScheme(scheme: scheme, url: url.absoluteString, result: {(result) -> Void in
                if result is FlutterError {
                    print((result as! FlutterError).message)
                }
                else if (result as? NSObject) == FlutterMethodNotImplemented {}
                else {
23
                    let json: [String: Any]
24
                    if let r = result {
25 26 27
                        json = r as! [String: Any]
                        let urlResponse = URLResponse(url: url, mimeType: json["content-type"] as! String, expectedContentLength: -1, textEncodingName: json["content-encoding"] as! String)
                        let data = json["data"] as! FlutterStandardTypedData
28
                        urlSchemeTask.didReceive(urlResponse)
29
                        urlSchemeTask.didReceive(data.data)
30 31 32 33 34 35 36 37 38 39 40
                        urlSchemeTask.didFinish()
                    }
                }
            })
        }
    }
    
    func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
        
    }
}