我正在尝试使用Google Analytics SDK v3.10 for iOS。
我添加了所有依赖项和标题,然后在我的app delegate中添加了方法:
- (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
这是一个已知的错误吗?关于如何避免这种情况的任何线索?
提前致谢!
编辑:在Google群组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
答案 0 :(得分:3)
我有同样的问题。
在我的情况下,因为我使用Core Data和NSManagedObjectContextDidSaveNotification来合并后台进程的更新,导致this post中描述的异常:
我使用的解决方案是将managedObjectContext本身添加为NSNotificaition声明的对象:
ObjC
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(managedObjectContextDidSave:)
name:NSManagedObjectContextDidSaveNotification
object:self.managedObjectContext];
夫特
NSNotificationCenter.defaultCenter().addObserverForName(NSManagedObjectContextDidSaveNotification,
object: self.managedObjectContext,
queue: nil)
对我而言,没有更多的内存泄漏。
希望它可以提供帮助。
答案 1 :(得分:-1)
一旦事件被触发,将需要几分钟才能反映在仪表板中。预计用户应该没有耐心。这是看待它的一种方式。
关于代码,最好手动调度事件。 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];