15

現在、ネイティブの iPad アプリをハイブリッド アプリに変更中です。一部の機能と UI はネイティブ コードのままで、その他の機能は HTML で実装されます。HTML はサーバーから提供され、オフラインでも利用できます。

現在発生している主な問題は、Google アナリティクス
の使用に関するものです。既存のネイティブ コードは GA SDK for IOS を使用しており、Web パーツに Web API を使用する予定でしたが、両方のチャネルのデータをどのように使用できるかわかりません。データストアが異なるように見えるため、GA で一緒に。

さらに、Web パーツの A/B テストに Google Analytics の Content Experiments を使用する予定ですが、コンバージョンの目標はネイティブ パーツで達成される可能性があります。

ハイブリッド アプリまたは代替ソリューションでの分析の経験がある人。

ありがとう

4

3 に答える 3

18

あなたは本当にSDKを使いたいと思っています。クラッシュ、プレイストアの統合など、モバイルアプリに便利な機能がいくつかあります. また、バッテリーの使用量を改善するためにデータをバッチで送信し、アプリがオフラインのときにヒットをキューに入れ、オンラインのときに送信することもできます. Javascript 実装でそれをエミュレートすることはできません。

したがって、作成する必要があるのは、WebView からアプリのネイティブ部分にデータを送信する Javascript メソッドです。この他のスタック オーバーフロー スレッドには、その方法の詳細が記載されています。

したがって、Google アナリティクスのインタラクションを追跡する JavaScript は次のようになります。

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

これで、ga.js ファイルの代わりとして機能します。現在 _gaq で使用しているものと同じ API を Web アプリで引き続き使用できます。上記のアダプターは、そのデータを APP のネイティブ部分に送信します。あとは、その HTTP リクエストをインターセプトするネイティブ部分を記述し、ネイティブ SDK を使用して Google アナリティクス関数を発行するだけです。

法線_gaq.push(['_trackPageview', '/homepage']);は のような uri になりanalytics://_trackPageview?/homepageます。これをネイティブ部分でインターセプトして解析するだけです。

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

良い出発点になれば幸いです。幸運を。

于 2013-03-17T05:11:54.483 に答える
1

確かに難しい構成です。

Web パーツに analytics.js (Universal Analytics) を使用することを検討しましたか? その後、単一のアプリ プロファイルにデータをフィードできる場合があります

それ以外の場合は、 Measurement Protocolのサーバー側実装を使用して、バックエンドからすべてのトラッキング コールを送信できますが、おそらく Content Experiment を使用できなくなります。

于 2013-03-13T15:49:30.620 に答える
0

私は自分のアプリにhttp://www.flurry.com/を使用し、他のものにはGoogleAnalyticsを使用しています。同じアプリで両方を混ぜたことはありませんが、実行可能だと思います。私は最初に突風をチェックすることをお勧めします。ハイブリッドアプリでも十分な可能性があります。

于 2013-03-10T20:01:44.580 に答える