// // GDWebURLSchemeHandler.m // DESThreeTest // // Created by Qwerdf on 2025/10/24. // Copyright © 2025 zhang alan. All rights reserved. // #import "GDWebURLSchemeHandler.h" #import "GDWebAssetStorageService.h" #import "GDWebPageHookService.h" #import "GDWebURLSessionService.h" @implementation GDWebURLSchemeHandler - (instancetype)init { _tasks = [NSMutableDictionary dictionary]; _schemeStatusDic = [NSMutableDictionary dictionary]; return self; } - (void)webView: (WKWebView *)webView startURLSchemeTask: (id)urlSchemeTask { id service; if ([GDWebAssetStorageService canService:urlSchemeTask]) { service = [[GDWebAssetStorageService alloc] initWithSchemeTask:urlSchemeTask]; }else if ([GDWebPageHookService canService:urlSchemeTask]) { service = [[GDWebPageHookService alloc] initWithSchemeTask:urlSchemeTask]; }else { service = [[GDWebURLSessionService alloc] initWithSchemeTask:urlSchemeTask]; GDWebURLSessionService *webService = (GDWebURLSessionService *)service; webService.stopMarkDic = self.schemeStatusDic; } [self.tasks setValue:service forKey:urlSchemeTask.description]; [service startLoading:^{ // GDStrongify(self); [self.tasks removeObjectForKey:urlSchemeTask.description]; }]; } - (void)webView: (WKWebView *)webView stopURLSchemeTask: (id)urlSchemeTask { [self.schemeStatusDic setObject:@1 forKey:urlSchemeTask.description]; NSURL *URL = urlSchemeTask.request.URL; id service = self.tasks[URL.absoluteString]; [service stopLoading]; [self.tasks removeObjectForKey:urlSchemeTask.description]; } @end