Naprawdę chcesz użyć SDK. Ma pewne funkcje, które przydadzą się w aplikacjach mobilnych, takich jak awarie, integracja sklepu Play. Wysyła również dane w partiach, aby poprawić wykorzystanie baterii, a także może kolejkować trafienia, gdy aplikacja jest w trybie offline, aby zostać wysłana w trybie online. Nie będzie można tego naśladować w implementacjach JavaScript.
Więc musisz napisać metody Javascript, które wysyłają dane z WebView z powrotem do Natywnej części aplikacji. This other Stack Overflow thread ma więcej szczegółów, jak to zrobić.
Tak więc javascript do śledzenia interakcji Google Analytics może wyglądać mniej więcej tak.
var _gaq = {};
_gaq.push = function(arr){
var i, hit;
hit = arr.slice(1).join('&');
location.href = 'analytics://'+arr[0]+'?'+arr;
};
Teraz to będzie działać jako zamiennik pliku ga.js, nadal można korzystać z tego samego API jak użyć na _gaq dziś na Web App, a adapter powyżej woli wysyła swoje dane do TE rodzimy część APP. A następnie wystarczy napisać natywną część, która będzie przechwytywać to żądanie HTTP i używać natywnego SDK do wydawania funkcji Google Analytics.
Normalny _gaq.push(['_trackPageview', '/homepage']);
stanie się uri jak analytics://_trackPageview?/homepage
, teraz wystarczy go przechwycić i przeanalizować w części Natywnej.
- (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;
}
Mam nadzieję, że dał dobry punkt wyjścia. Powodzenia.
Czy kiedykolwiek używałeś flurry w aplikacji hybrydowej? Nie widzę jeszcze żadnej pomocy biblioteki, być może muszę wyglądać jeszcze bardziej \ – Vineet