1

我正在尝试使用适用于 iOS 的 Google Analytics SDK v3.10。

我添加了所有依赖项和标头,然后在我的应用程序委托中添加方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

,我添加了这些行:

[[GAI sharedInstance] setDispatchInterval:20.0];
[[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXXXXXX-X"];
[[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose];

具有正确的跟踪 ID。

在我的登陆视图中,方法 viewDidAppear,我添加了这些行

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
[tracker set:kGAIScreenName value:@"MyLandingView"];
[tracker send:[[GAIDictionaryBuilder createAppView] build]];

它会导致可怕的内存泄漏(大约 +1mb/s)和这些日志冻结:

Apr 20 08:07:47 iPad-of-Pitt MyAppName[920] <Warning>: void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode

这是一个已知的错误 ?关于如何避免这种情况的任何线索?

提前致谢 !

编辑:在谷歌组中复制了这个问题https://groups.google.com/forum/?fromgroups#!topic/ga-mobile-app-analytics/0goRZOc3vk0

编辑 2:也在此处发布问题https://code.google.com/p/analytics-issues/issues/detail?id=617&thanks=617&ts=1429543879

4

2 回答 2

3

我遇到过同样的问题。

在我的情况下,这是因为我使用 Core Data 和 NSManagedObjectContextDidSaveNotification 来合并来自后台进程的更新,从而导致如本文所述的异常 :

我使用的解决方案是将 managedObjectContext 本身添加为 NSNotificaition 声明的对象:

对象

[[NSNotificationCenter defaultCenter] addObserver:self 
                                  selector:@selector(managedObjectContextDidSave:) 
                                  name:NSManagedObjectContextDidSaveNotification 
                                  object:self.managedObjectContext];

迅速

NSNotificationCenter.defaultCenter().addObserverForName(NSManagedObjectContextDidSaveNotification,
            object: self.managedObjectContext,
            queue: nil)

对我有用,没有更多的内存泄漏。

希望它可以帮助。

于 2015-09-01T08:45:07.727 回答
-1

触发事件后,需要几分钟时间才能反映在仪表板中。IT 预计用户应该有一点耐心。这是看待它的一种方式。

关于代码,最好手动调度事件。IT 肯定会反映在仪表板中。

id newTracker = [[GAI sharedInstance]trackerWithTrackingId:googlePropertyId];
[GAI sharedInstance].defaultTracker = newTracker; // Set newTracker as the default tracker globally.
[GAI sharedInstance].debug = YES;
DebugLog(@"Events log : %@",objAnalytics.event_description);
[newTracker trackEventWithCategory:objAnalytics.event_name
                            withAction:objAnalytics.event_description
                             withLabel:objAnalytics.event_name
                             withValue:[NSNumber numberWithInt:100]];

请尝试手动分派事件。这肯定会起作用(至少它对我有用)。

[[GAI sharedInstance]dispatch];
于 2015-04-20T12:54:41.667 回答