ios – 使用Google Analytics(分析)与混合移动应用

我们正在将本土的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;
}

我希望给你一个很好的起点.祝你好运.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...