iO开发如何获得UserAgent

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

推荐阅读更多精彩内容