小编cro*_*nos的帖子

在HTML5文档中加载视频时,WebView的自定义NSURLProtocol类不起作用

我正在使用WebView,它从沙盒等特定位置加载其内容.所以我添加了NSURLProtocol的简单子类来处理这些文件.协议处理程序将管理URL方案,如"dummy:".当我尝试像dummy:///index.html这样的自定义URL时,这应该从本地目录加载index.html.Htmls和嵌入式图像等工作正常.

但是当我尝试使用包含HTML5视频播放器的html文件时,它不起作用.WebView甚至没有尝试过canInitWithRequest方法:在我的自定义类中请求视频文件.

@interface DummyURLProtocol : NSURLProtocol {
}

+ (BOOL)canInitWithRequest:(NSURLRequest *)request;
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request;
+ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b;
- (void)startLoading;
- (void)stopLoading;

@end

@implementation DummyURLProtocol

+(BOOL)canInitWithRequest:(NSURLRequest *)request {
    return [[[request URL] scheme] isEqualToString:@"dummy"];
}

+(NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
    return request;
}

+(BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b {
    return [[[a URL] resourceSpecifier] isEqualToString:[[b URL] resourceSpecifier]];
}

-(void)startLoading {
    NSURL *url = [[self request] URL];
    NSString *pathString = [url resourceSpecifier];
    NSString *path = [NSString stringWithFormat:@"/Users/cronos/tmp/video_demo/%@", pathString];
    NSString *fullFilename = [pathString lastPathComponent]; …
Run Code Online (Sandbox Code Playgroud)

macos cocoa webkit objective-c

13
推荐指数
1
解决办法
4431
查看次数

标签 统计

cocoa ×1

macos ×1

objective-c ×1

webkit ×1