我们正在将本土的iPad应用程序变成混合应用程序.一些功能和UI将保留在本机代码中,其他功能将以
HTML格式实现,这些
HTML将从我们的服务器提供,也可以离线使用.
我现在遇到的主要问题是使用Google Analytics(分析):
现有的本地代码使用GA SDK for IOS,我计划使用Web API作为Web部件,但是我无法找到如何在GA中一起使用这两个通道的数据,因为数据存储看起来是不同的.
此外,我打算使用Google Analytics(分析)的内容实验来测试网络部分的A / B,但转换目标可能是在本机部分实现的.
任何人都有混合应用或替代解决方案的分析经验.
谢谢
解决方法
你真的想使用SDK.它具有一些功能,将适用于移动应用程序,如崩溃,游戏店集成.它还批量发送数据以改善电池使用情况,并且还可以在应用离线时在线上排队匹配.您将无法使用
Javascript实现模拟.
所以你需要写的是将数据从WebView发送回应用程序的本机部分的Javascript方法. This other Stack Overflow thread有更多的细节如何做到这一点.
因此,跟踪Google Analytics(分析)互动的JavaScript可能看起来像这样.
var _gaq = {}; _gaq.push = function(arr){ var i,hit; hit = arr.slice(1).join('&'); location.href = 'analytics://'+arr[0]+'?'+arr; };
现在,这将作为您的ga.js文件的替代品,您仍然可以使用与您在Web App上的_gaq上使用的API相同的API,并且上述适配器将其数据发送到APP的本地部分.然后,您只需编写将拦截该HTTP请求的本机部分,并使用本机SDK发布Google Analytics(分析)功能.
一个普通的_gaq.push([‘_ trackPageview’,’/ homepage’]);将成为一个uri,如分析:// _ trackPageview?/ homepage,现在你只需要拦截和解析在Native部分.
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { NSURL *url = [request URL]; NSLog(@"Hit detected %@",url.absoluteString); if ([[url scheme] isEqualToString:@"analytics"]) { id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; if ([url.host isEqualToString:@"_trackPageview"]) { // Get the page from parameters and then track the native View. // (...) [tracker trackView:page]; } else if ([url.host isEqualToString:@"_trackEvent"]) { // Get the event parameters from url parameters and then track the native GA Event. // (...) [tracker trackEventWithCategory:cat withAction:act withLabel:lab withValue:val]; } // Check for all other analytics functions types // (...) // Cancel the request return NO; } // Not an analytics: request. return YES; }
我希望给你一个很好的起点.祝你好运.