简体   繁体   English

使用Flurry Analytics在选项卡中记录时间花费

[英]Recording time spend in a tab using Flurry Analytics

I currently have multiple tabs within my application. 我的应用程序中目前有多个标签。 What I would like to do is record the amount of time the user spends in the selected tab using Flurry Analytics. 我想做的是使用Flurry Analytics在所选标签中记录用户花费的时间。 Usually I would start recording when viewDidAppear is call and stop recording when the viewDidDisappear method is called. 通常,我会在调用viewDidAppear时开始记录,而在viewDidDisappear方法时停止记录。

viewDidAppear viewDidAppear

[Flurry logEvent:@"Tab_News" withParameters:nil timed:YES];

viewDidDisappear viewDidDisappear

[Flurry endTimedEvent:@"Tab_News" withParameters:nil];

My problem is that when a video gets played within the tab the viewDidDisappear and viewDidAppear methods get called even thought the user doesnt physically leave the tab. 我的问题是,当在选项卡中播放视频时,即使用户没有实际离开选项卡,也会viewDidDisappearviewDidAppear方法。

Please help me with suggestions as to how I can circumvent this. 请帮助我提出有关如何规避此问题的建议。

Create a BOOL called videoPlaying to track if a video is being played. 创建一个名为videoPlayingBOOL来跟踪是否正在播放视频。 When you play the video set it to YES . 播放视频时,将其设置为YES In viewDidDisappear only endTimedEvent if (videoPlaying == NO) if (videoPlaying == NO)viewDidDisappear仅显示endTimedEvent

The same applies to viewDidAppear . 这同样适用于viewDidAppear If videoPlaying == YES don't logEvent and then set videoPlaying = NO . 如果videoPlaying == YES请不要记录logEvent ,然后设置videoPlaying = NO

Something like this: 像这样:

- (void)viewDidLoad
{
    _videoPlaying = NO;
}

- (void)viewDidAppear
{
    if (_videoPlaying == YES) {
        _videoPlaying = NO;
    } else {
        [Flurry logEvent:@"Tab_News" withParameters:nil timed:YES];
    }
}

- (void)viewDidDisappear
{
   if (_videoPlaying == NO) {
      [Flurry endTimedEvent:@"Tab_News" withParameters:nil];
   }
}

- (void)playVideo
{
    _videoPlaying = YES;
    // Play video
}

If you're targeting iOS 6, you can do the following: 如果您以iOS 6为目标,则可以执行以下操作:

- (void)viewDidLoad {
    [super viewDidLoad];
    [Flurry logEvent:@"Tab_News" withParameters:nil timed:YES];
}

- (void)dealloc {
    [Flurry endTimedEvent:@"Tab_News" withParameters:nil];
}

This is valid if you present this ViewController as soon as it's loaded. 如果您在加载此ViewController时立即提出,则此方法有效。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM