在AFNetworking中设置User-Agent

Mar*_*utz 7 ios afnetworking afnetworking-2 swift

我们的iOS应用程序最近被Apple拒绝,因为它无法建立与我们的服务器API的有效连接.我们使用特殊格式的用户代理来注册设备令牌等.如果用户代理不适合我们的sheme,则api会阻止请求.

这一切都很好地在模拟器和真实设备上测试应用程序.用户代理设置正确,api调用有效.

当Apple测试应用程序时,他们拒绝了它,因为应用程序无法连接到api.当我们检查服务器日志文件时,我们注意到,Apple测试人员发出的每个请求都有一个完全不同的用户代理,而不是我们在代码中设置的用户代理.

我们测试应用程序时设置的(正确的)用户代理:

AppName-App/010002 iOS/8.1.2 on Apple iPhone/DeviceToken

(不正确的)用户代理,如我们的日志中所示:

AppName/1.0.0.2 (iPad; iOS 8.1.3; Scale/2.00)

该应用程序使用AFNetworking并将其用户代理设置如下:

ConnectionManager.requestSerializer.setValue(IOSREQUESTHEADER, forHTTPHeaderField: "user-agent")

你有任何想法为什么这不适用于Apple测试应用程序,而它完全没问题吗?

最好的祝福

nai*_*ail 6

我尝试使用下面的代码更改我的用户代理

[self.requestSerializer setValue:@"VAL" forHTTPHeaderField:@"user-agent"];

但直到重命名@"user-agent"才有效@"User-Agent"


gbk*_*gbk 5

尝试下一步:

NSString *userAgent = [self.manager.requestSerializer  valueForHTTPHeaderField:@"User-Agent"];
userAgent = [userAgent stringByAppendingPathComponent:@"CUSTOM_PART"];
[self.manager.requestSerializer setValue:userAgent forHTTPHeaderField:@"User-Agent"];
Run Code Online (Sandbox Code Playgroud)

这将保存由AFNetworking数据生成的数据,并由您自己附加


Aar*_*ger 3

日志中显示的用户代理是 AFNetworking 的默认用户代理。这意味着您设置标头的代码未被调用。

也许您的代码是在发布版本中编译出来的?如果您有类似的东西#ifdef DEBUG或NSAssert()在相关的逻辑路径中,则可能会发生这种情况。

如果这还不够,请发布额外的代码。