UserAgent
如果App项目中, 使用了webview, 后台需要知道该用户的来源, 使用的设备信息等,来区分是网站端还是移动端, 从而进行一些后续处理, 这是需要判断依据 《UserAgent》,简称:UA
UserAgent是什么
User Agent : 用户代理,是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好。iOS中 主要用于webview加载的页面, 给后台提供处理依据.
处理 : 用webview, 调用 JS 的navigator.userAgent, 获取原UserAgent, 与后台商定, 拼接字符串, 放入字典中, 存储.
如何获取,更改UserAgent
UA很多情况,在首次打开应用时候,就需要根据获得的UA,与后台交接,来决定数据数据处理。
所以,经常会出现在AppDelegate.h上。
不多说,直接上代码:
#import "AppDelegate.h"
@interface AppDelegate ()
/**
原始的UA
*/
@property (nonatomic,strong) NSString * OriginalUA;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self SetUpUA];
return YES;
}
/**
设置UA(UserAgent)
*/
-(void)SetUpUA{
UIWebView* WebView= [[UIWebView alloc] initWithFrame:CGRectZero];
// 获取原始的UA
_OriginalUA = [WebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"原始的UA=%@", _OriginalUA);
// 当前应用软件版本
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appCurVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
// NSLog(@"当前应用软件版本号:%@",appCurVersion);
// 创建一个Str,用于覆盖到原始的UA
// 拼接风格:原始UA-应用名称-系统-版本号(按照自己的喜好,设计一个风格)
// 把Str覆盖原始的UA,
NSString *Str = [NSString stringWithFormat:@"%@-应用名称-iOS-%@",_OriginalUA,appCurVersion];
NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:Str, @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
// 重新获取一下UA,一定要初始化一次WebView
WebView= [[UIWebView alloc]init];
NSString *UpdateAgent = [WebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"newUserAgent=%@",UpdateAgent);
}
@end
一起看一下打印的结果:
<pre>2017-06-13 15:17:48.515 UA[1871:123554] 原始的UA=Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E269
2017-06-13 15:17:48.523 UA[1871:123554] newUserAgent=Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E269-应用名称-iOS-1.0