2013-02-19 11 views
6

iOSアプリケーション(バージョン2.0ベータ4)に最新のGoogleアナリティクスSDKを追加しました。 私はガイドが言うように同じことをやったとアプリデリゲートにこのコードを追加:GoogleアナリティクスはiOSのビューをトラッキングしませんか?

self.trackedViewName = @"Main Menu Screen"; 

すべてが正常に動作しますが、何らかの理由:今

// Optional: automatically send uncaught exceptions to Google Analytics. 
[GAI sharedInstance].trackUncaughtExceptions = YES; 
// Optional: set Google Analytics dispatch interval to e.g. 20 seconds. 
[GAI sharedInstance].dispatchInterval = 20; 
// Optional: set debug to YES for extra debugging information. 
[GAI sharedInstance].debug = YES; 
// Create tracker instance. 
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-TRACKINGID-2"];//UA-33873963-13 - My testing google analytics trackingId 

[self.tracker setSessionStart:YES]; 
[self.tracker setSessionTimeout:60]; 

、各ビュー上で、私はこれを追加しました20の画面のうち3つは自分自身をGoogleに送信していないため、私は理由を知りません。私はネット全体を検索しましたが、誰もこの問題に出会ったことはありません。私は、この問題に精通している人なら、スタックオーバーフローしていると考えました。

私を助けてください。 ありがとう!

答えて

4

問題は最も簡単な方法で修正されています。

私が書いたコードはAppDelegateです。追跡IDがトラッキングIDで一度初期化された後、それを使用している各ビューでトラッカーを呼び出すだけで済みます。 (私はそのことについてはよく分からないけど、とにかく、それは私のために働いた。)

ので、AppDelegateに:

[GAI sharedInstance] defaultTracker]; 
[self.tracker sendView:@"Some name"]; 

:ビューコントローラviewDidLoadインサイド

// Optional: automatically send uncaught exceptions to Google Analytics. 
[GAI sharedInstance].trackUncaughtExceptions = YES; 
// Optional: set Google Analytics dispatch interval to e.g. 20 seconds. 
[GAI sharedInstance].dispatchInterval = 20; 
// Optional: set debug to YES for extra debugging information. 
[GAI sharedInstance].debug = YES; 
// Create tracker instance. 
self.tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-TRACKINGID-2"];//UA-33873963-13 - My testing google analytics trackingId 

[self.tracker setSessionStart:YES]; 
[self.tracker setSessionTimeout:60]; 

これをした後、それは完全に働いた。

+1

彼らはsdkを更新したことに注意してください。バージョン3では動作しません。このスレッドを確認してください:http:// stackoverflow。com/questions/16289581/gaitrackedviewcontroller-and-utableviewcontroller – pbibergal

+0

ええ、私はこの回答を7ヶ月前に公表しました。 –

+2

はい、知っています、私はあなたのソリューションをsdk 3で試してみる皆のためのコメントを書いた。 – pbibergal

19

私は以前も同じ問題を抱えていました。私はあなたの上書きで、次のメソッドを呼び出していないことを賭ける:

あなた -(void)viewDidLoadオーバーライドで
  1. [super viewDidLoad]
  2. [super viewDidAppear:animated]あなた-(void)viewDidAppear:(BOOL)animatedオーバーライドであなたの-(void)viewDidUnloadオーバーライド
  3. [super viewDidUnload] ...(取ります上書きしている他のすべての方法のケアGAITrackedViewController
-(void)viewDidLoad 
{ 
    // call this at the beginning of the overridden methods 
    self.screenName = @"Some Name"; 
    [super viewDidLoad]; 

    // your remaining code here 
} 

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    // your remaining code here 
} 

最も重要な方法は、リアルタイムでviewDidAppear:を追跡するため、特に以来viewDidLoadviewDidAppear:をしているこのビューが現在表示されていることを示しています具体的には、あなたの方法は、以下のようになります。

EDIT: GoogleアナリティクスSDKのバージョン3.0以来スクリーンネームプロパティは、スーパーのviewDidLoadメソッドを呼び出す前に設定する必要があります。

+0

'[GAI sharedInstance] defaultTracker];を実行し、' [self.tracker sendView:@ "Some name"]; 'を呼び出すだけで問題を解決しました。これをした後、それは完全に働いた。 –

+0

@ who9vyありがとう!あなたがそれについて考えるとき、そのような明白なことが、本当に見逃しやすいです。 Googleは実際にこれをドキュメントに入れてください。 – tobyc

+0

ありがとうございました - それはチケットでした。スーパーコールを使わずにスクリプトを作成してスクリプトを作成するだけです。Doh! – earnshavian

2

だから、私はこの問題への答えを見つけた:のviewDidLoadで今#import "GAI.h"

:ヘッダで

は、これを追加

  1. はこれを行うよりもself.trackedViewName = @"Some Name";

  2. を追加します。 [GAI sharedInstance] defaultTracker];

  3. それだけで正常に動作しますたより [self.tracker sendView:@"Some Name"];

  • もこれを追加します。

  • 15

    バージョン3.02を使用していて、同じ問題が発生しました。以下の固定私の問題:

    -(void) viewDidAppear:(BOOL)animated { 
        self.screenName = @"My Screen"; // set screenName prior to calling super 
        [super viewDidAppear:animated]; 
    
        ... 
    } 
    

    は、あなたは間違いなく、それはGAのデータを送信するトリガーするためsuperを呼び出すようにしたいです。私には、それ以前にscreenNameを設定する必要があるようです。

    +0

    ありがとう!これは私のために働いてきました。私はGAI 3.0にいると思います。 – Micah

    +0

    これは修正する正しい方法です!ありがとうございました! – skywinder

    +0

    GAの自動ビュートラッキングをデバッグするのは非常にイライラです!これは私のためにも機能しました(iOS 7のGAI v3.0.6)。 恐ろしい誤解を招くような文書があなたを狂ってしまうかもしれません。 –

    0

    ..だからこれは(私自身を含め)..そこnoobiesのため..です

    これが考えるためにダムの事かもしれませんが、私のために[スーパー現れなかった愚かなスーパービューを入れていましたviewDidAppear:アニメーション];を呼び出して画面名を設定します。

    私は単なるiOSユーザーですが、gaitrackedviewcontroller.hを調べると、設定する最新のスクリーン名は、よくscreenname not trackedviewnameです。

    • (無効)viewDidAppear::だから、これは私がどのように見えるかです(BOOL)アニメーション{

      self.screenName = @ "ログイン画面";

      [super viewDidAppear:animated];

    }

    グッドラック。これが誰にも役立つことを望みます。高級感を保つ。

    0

    の環境でも同様の問題がありました。私は他の人の道を試みたが、希望はなかった。最後に、私はANSWERが公式指示の外にあることを発見しました。

    2行追加すると動作します。

    NSDictionary *appDefaults = @{kAllowTracking: @(YES)}; 
    [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; 
    

    公式の指示では、デフォルトでkAllowTrakingを登録する必要はありません。

    関連する問題