14

Wir sind dabei, unsere native iPad-App in eine Hybrid-App umzuwandeln. Einige Funktionen und UI bleiben im systemeigenen Code erhalten, und andere Funktionen werden in HTML implementiert, das von unseren Servern bereitgestellt wird und auch offline verfügbar sein wird.Verwenden von Google Analytics mit hybrider mobiler App

Das Hauptproblem ich jetzt begegnen, ist bei der Verwendung von Google Analytics:
Die bestehende nativen Code verwendet die GA-SDK für iOS und ich über die Verwendung der Web-API für den Web-Teil geplant, aber ich kann nicht finden, wie die Daten Beide Kanäle können zusammen in GA verwendet werden, da die Datenspeicher unterschiedlich zu sein scheinen.

Außerdem plane ich Google Analytics Content-Tests für A/B-Test der Web-Teil aber Conversion-Ziele zu verwenden, könnten diejenigen im nativen Teil erreicht werden.

Wer noch keine Erfahrung mit Analysen auf Hybrid-Anwendungen oder alternative Lösungen haben.

Dank

Antwort

18

Sie möchten das SDK wirklich verwenden. Es hat einige Funktionen, die für mobile Apps wie Abstürze, Play-Store-Integration nützlich sein wird. Außerdem werden Daten in Stapeln gesendet, um den Akkuverbrauch zu verbessern, und es können auch Treffer in die Warteschlange eingereiht werden, während die App offline ist, um gesendet zu werden, wenn sie online ist. Sie können das nicht mit den Javascript-Implementierungen emulieren.

Also, was Sie schreiben müssen, ist Javascript Methoden, die Daten aus dem WebView zurück zum Mutter Ein Teil der App senden. This other Stack Overflow thread hat mehr Details, wie man das macht.

So ist die Javascript-Google Analytics-Interaktionen zu verfolgen wie folgt aussehen könnte.

var _gaq = {}; 
_gaq.push = function(arr){ 
    var i, hit; 
    hit = arr.slice(1).join('&'); 
    location.href = 'analytics://'+arr[0]+'?'+arr; 
}; 

Jetzt wird dies für Ihre Datei ga.js als Ersatz arbeiten, können Sie immer noch die gleiche API verwenden können, wie Sie auf _gaq heute auf Ihrem Web verwenden App, und der Adapter über Willen sendet seine Daten heimisch te Teil der APP. Und dann müssen Sie nur den nativen Teil schreiben, der diese HTTP-Anfrage abfängt und das native SDK verwendet, um die Google Analytics-Funktionen auszugeben.

Ein normaler _gaq.push(['_trackPageview', '/homepage']); wird ein uri wie analytics://_trackPageview?/homepage werden, jetzt müssen Sie nur abfangen und analysieren, dass auf dem nativen Teil.

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

Ich hoffe, es hat Ihnen einen guten Ausgangspunkt gegeben. Viel Glück.

0

Ich benutze http://www.flurry.com/ für meine Apps und Google Analytics für meine anderen Sachen. Ich habe nie beide in der gleichen App gemischt, aber ich denke, es ist machbar. Ich würde mich freuen, zuerst die Aufregung zu überprüfen. Es besteht eine gute Chance, dass es auch für eine Hybrid-App ausreicht.

+0

Haben Sie in der Hybrid-App schon einmal Aufruhr benutzt? Ich sehe noch keine Bibliotheksunterstützung, vielleicht muss ich härter schauen \ – Vineet

1

In der Tat eine anspruchsvolle Konfiguration.

Haben Sie sich in analytics.js (Universal Analytics) für den Webpart verwendet? Dann sind Sie können der Lage sein, Daten in einer einzigen App Profil

Else zu ernähren, könnten Sie alle Tracking-Anrufe von Ihrem Backend senden, indem Sie eine serverseitige Implementierung des Measurement Protocol verwenden, aber Sie werden wahrscheinlich lose Nutzung von Inhalten Experiment!

+0

Ich habe nicht erwartet, dass dies eine anspruchsvolle Konfiguration ist, da hybride Apps die Richtung sind, in die viele gehen, aber es erweist sich in der Tat als eine Herausforderung. – Variant