14

我们正在将我们的原生iPad应用程序变为混合应用程序。一些功能和UI将保留在本地代码中,其他功能将以HTML形式实现,这些HTML将从我们的服务器提供服务,并且也可以脱机使用。将谷歌分析与混合移动应用程序结合使用

我现在遇到的主要问题是使用谷歌分析:
现有的原生代码使用GA SDK iOS和我计划使用Web API的网络的一部分,但是我怎么也找不到数据来自两个渠道的数据可以在GA中一起使用,因为数据存储似乎是不同的。

此外,我计划使用Google Analytics的内容实验进行A/B测试,但转换目标可能是在本机部分实现的。

任何人都有关于混合应用程序或其他解决方案的分析经验。

感谢

回答

18

您确实想使用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文件替换,你仍然可以使用相同的API,你_gaq今天上使用您的Web应用程序,并且上面会适配器将其数据发送给TE本地APP的一部分。然后您只需编写将拦截该HTTP请求的本机部分,并使用本机SDK发布Google Analytics功能。

正常_gaq.push(['_trackPageview', '/homepage']);将成为像analytics://_trackPageview?/homepage这样的URI,现在您只需要截取并解析本机部分。

- (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; 
} 

我希望它给了你一个很好的起点。祝你好运。

0

我用http://www.flurry.com/我的应用程序和谷歌Analytics(分析)对我其他的东西。我从来没有在同一个应用中混用他们两个,但我猜这是可行的。我会抢先检查一下。对于混合应用程序来说,这是一个很好的机会。

+0

你有没有在混合应用程序中使用乱七八糟的? 我没有看到任何库的支持呢,也许我需要更努力\ – Vineet 2015-10-18 17:31:18

1

确实是一个具有挑战性的配置。

您是否使用analytics.js(Universal Analytics)进行了Web部件研究?然后,你可以能够将数据提供给一个单一的应用程序配置文件

否则,你可以从你的后端发送的所有跟踪调用,利用服务器端实现Measurement Protocol的,但你会内容可能松动的用法实验!

+0

我没想到这是一个具有挑战性的配置混合应用是方向很多头,但它确实证明了具有挑战性的。 – Variant 2013-03-14 14:24:06

相关问题