ios - 自定义 NSURLProtocol 不会调用 canInitWithRequest :

标签 ios objective-c nsurlsession nsurlprotocol

我已经实现了 NSURLProtocol 的子类。我需要它来模拟单元测试的 URL 响应。我已在单元测试的 setUp 方法中注册了我的类。

- (void)setUp
{
    [NSURLProtocol registerClass:[RDMockResponseURLProtocol class]];

    [DSMockResponseURLProtocol.mockResponses setObject:[self bigFileResponse]
                                                forKey:[self bigFileURL]];

    <...>
}

我已经重写了 NSURLProtocol 的类方法 canInitWithRequest: 以及其他需要重写的方法。

@implementation DSMockResponseURLProtocol

<...>

+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
    return [DSMockResponseURLProtocol.mockResponses.allKeys containsObject:request.URL];
}

不幸的是 canInitWithRequest: 没有被调用。

我使用 NSURLSession 配置为在后台模式下继续执行任务。这不是导致问题的原因吗?

sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];

请与我分享您的任何想法!先谢谢了[鞠躬]

最佳答案

看来我已经在文档中找到了答案。

You cannot use custom URLProtocol subclasses in conjunction with background sessions.

https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411050-protocolclasses

关于ios - 自定义 NSURLProtocol 不会调用 canInitWithRequest :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379175/

相关文章:

ios - Xcode 的 "Target Membership"是否与 Bundle 相关?

ios - 在 UISearchDisplayController 中检测对 "no displayed search results"的点击

objective-c - 连续更改 Imageview 图像在 iphone sdk 中给出内存警告

ios - 从 Objective-C iOS 中的 View Controller 在应用程序委托(delegate)数组中添加对象

ios - 如何为每个 NSURLRequest 设置不同的过期超时时间

ios - 如何在速度慢、连接性差的网络上下载大文件?

ios - 我的iOS应用程序在IPv6下运行良好,但是连接到XMPP是错误的。 Android没有错误

ios - 设置自定义 UIView 的不同水平对齐方式

objective-c - 在 QLPreviewController 中读取触摸事件

Swift 等到 dataTaskWithRequest 完成调用返回