设置NSURLSession sharedSession的配置

Azh*_*dri 5 ios nsurlsession

我需要将自定义用户代理字符串设置为NSURLSession的sharedSession.即每当我打电话时[NSURLSession sharedSession],它将默认包含我的自定义配置,我不需要每次都设置它.

我可以将配置设置为session,

NSURLSession * session = [NSURLSession sharedSession];
NSString * userAgent  = @"My String";
session.configuration.HTTPAdditionalHeaders = @{@"User-Agent": userAgent};
Run Code Online (Sandbox Code Playgroud)

但是我找不到如何将配置设置为sharedSession可以在代码中随时使用的配置.

Dan*_*sko 14

那是因为你无法修改sharedSession.想象一下,好像sharedSession是iOS设备sharedSession,并被所有其他应用程序和框架使用.有意义的是它不可配置吗?有关它的文档说明:

共享会话使用当前设置的全局NSURLCache,NSHTTPCookieStorage和NSURLCredentialStorage对象,并基于默认配置.

您要做的是定义自定义配置,这意味着您将需要自己的会话对象及其自己的配置.这就是为什么有一个特定的构造函数给你你需要的东西:

+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration
                                  delegate:(id<NSURLSessionDelegate>)delegate
                             delegateQueue:(NSOperationQueue *)queue
Run Code Online (Sandbox Code Playgroud)

为简洁起见,您可以使用[NSURLSessionConfiguration defaultSessionConfiguration]创建基本配置,然后在那里设置其他标头.

当然,您将负责保留会话等