6

最新の Google アナリティクス SDK を iOS アプリケーションに追加しました (バージョン 2.0 ベータ 4)。ガイドと同じことを行い、このコードをアプリデリゲートに追加しました:

// 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];

さて、各ビューにこれを追加しました:

self.trackedViewName = @"Main Menu Screen";

すべて正常に動作しますが、何らかの理由で 20 画面のうち 3 画面が Google に送信されず、その理由がわかりません。私はネット全体を検索しましたが、誰もこの問題に遭遇しませんでした。この問題に精通している人なら、それはスタックオーバーフローにあると思いました。

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

4

6 に答える 6

20

私はしばらく前に同じ問題を抱えていました。オーバーライドで次のメソッドを呼び出さないでください。

  1. [super viewDidLoad]あなたの-(void)viewDidLoadオーバーライドで
  2. [super viewDidAppear:animated]あなたの-(void)viewDidAppear:(BOOL)animatedオーバーライドで
  3. [super viewDidUnload]あなたの-(void)viewDidUnloadオーバーライドで
  4. ... (オーバーライドしている他のすべてのメソッドに注意してください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
}

最も重要な方法はviewDidLoadviewDidAppear:特にリアルタイム追跡の場合viewDidAppear:、このビューが現在表示されていることを示しています。

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

于 2013-02-19T09:46:06.633 に答える
15

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

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

   ...
}

superga データの送信をトリガーするため、必ず呼び出したいと思います。screenNameその前に設定する必要があるように私には思えます。

于 2013-12-17T21:43:48.800 に答える
4

問題は最も簡単な方法で修正されました。

私が書いたコードは、AppDelegate. トラッカーがトラッキング ID で一度初期化された後は、使用している各ビューでトラッカーを呼び出すだけです。(それについてはわかりませんが、とにかく私にとってはうまくいきました。)

だから、でAppDelegate

// 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];

ビューコントローラーの内部viewDidLoad

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

これを行った後、完全に機能しました。

于 2013-03-07T11:32:46.683 に答える
2

だから、私はこの問題に対する答えを見つけました:

ヘッダーにこれを追加します:#import "GAI.h"

今viewDidLoadで:

  1. 追加self.trackedViewName = @"Some Name";

  2. これを行うより: [GAI sharedInstance] defaultTracker];

  3. これも追加します: [self.tracker sendView:@"Some Name"];

それよりもうまく機能します。

于 2013-02-19T13:47:12.163 に答える
0

3.10環境では、同様の問題がありました。私は他の男の方法を試しましたが、希望はありません。最後に、ANSWER が公式の指示の外側にあることがわかりました。

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

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

公式の指示では、デフォルトで kAllowTraking を登録する必要があるとは言及されていません。

于 2015-02-25T03:41:09.503 に答える