From 962140040ce99936d0346d60c8065aca0edc06c7 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Tue, 26 May 2015 14:41:03 +0300 Subject: [PATCH] [ios][alohalytics] Use browser User-Agent for statistics. --- 3party/Alohalytics/src/apple/alohalytics_objc.mm | 8 +++++++- 3party/Alohalytics/src/apple/http_client_apple.mm | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/3party/Alohalytics/src/apple/alohalytics_objc.mm b/3party/Alohalytics/src/apple/alohalytics_objc.mm index 4ee686d0ca..cb6e7f819a 100644 --- a/3party/Alohalytics/src/apple/alohalytics_objc.mm +++ b/3party/Alohalytics/src/apple/alohalytics_objc.mm @@ -41,7 +41,10 @@ SOFTWARE. #import #import #import +#import #import +// Export user agent for HTTP module. +NSString * gBrowserUserAgent = nil; #endif // TARGET_OS_IPHONE using namespace alohalytics; @@ -287,8 +290,11 @@ static UIBackgroundTaskIdentifier sBackgroundTaskId = UIBackgroundTaskInvalid; } + (void)setup:(NSString *)serverUrl andFirstLaunch:(BOOL)isFirstLaunch withLaunchOptions:(NSDictionary *)options { - #if (TARGET_OS_IPHONE > 0) + // Initialize User Agent later, as it takes significant time at startup. + dispatch_async(dispatch_get_main_queue(), ^(void) { + gBrowserUserAgent = [[[UIWebView alloc] initWithFrame:CGRectZero] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; + }); // Subscribe to basic app lifecycle events. sBackgroundThreadQueue = ::dispatch_queue_create([serverUrl UTF8String], DISPATCH_QUEUE_SERIAL); NSNotificationCenter * nc = [NSNotificationCenter defaultCenter]; diff --git a/3party/Alohalytics/src/apple/http_client_apple.mm b/3party/Alohalytics/src/apple/http_client_apple.mm index 81e9389ddc..8169d9c156 100644 --- a/3party/Alohalytics/src/apple/http_client_apple.mm +++ b/3party/Alohalytics/src/apple/http_client_apple.mm @@ -36,6 +36,11 @@ SOFTWARE. #import #import +#include // TARGET_OS_IPHONE +#if (TARGET_OS_IPHONE > 0) // Works for all iOS devices, including iPad. +extern NSString * gBrowserUserAgent; +#endif + #include "../http_client.h" #include "../logger.h" @@ -60,6 +65,11 @@ bool HTTPClientPlatformWrapper::RunHTTPRequest() { if (!user_agent_.empty()) { [request setValue:[NSString stringWithUTF8String:user_agent_.c_str()] forHTTPHeaderField:@"User-Agent"]; } +#if (TARGET_OS_IPHONE > 0) + else if (gBrowserUserAgent) { + [request setValue:gBrowserUserAgent forHTTPHeaderField:@"User-Agent"]; + } +#endif // TARGET_OS_IPHONE if (!basic_auth_user_.empty()) { NSData * loginAndPassword = [[NSString stringWithUTF8String:(basic_auth_user_ + ":" + basic_auth_password_).c_str()] dataUsingEncoding:NSUTF8StringEncoding]; [request setValue:[NSString stringWithFormat:@"Basic %@", [loginAndPassword base64Encoding]] forHTTPHeaderField:@"Authorization"];