Files
WebApp/ShenQi/GDWebURLSchemeHandler.m
2026-02-24 09:55:08 +08:00

52 lines
1.7 KiB
Objective-C

//
// 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<WKURLSchemeTask>)urlSchemeTask {
id<GDWebCustomURLSchemeProtocol> 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<WKURLSchemeTask>)urlSchemeTask {
[self.schemeStatusDic setObject:@1 forKey:urlSchemeTask.description];
NSURL *URL = urlSchemeTask.request.URL;
id<GDWebCustomURLSchemeProtocol> service = self.tasks[URL.absoluteString];
[service stopLoading];
[self.tasks removeObjectForKey:urlSchemeTask.description];
}
@end