使用最新的Flurry SDK和ios4重新启动应用程序

时间:2010-07-03 08:36:09

标签: ios4 flurry

我对Flurry的最新版本(Flurry iPhone SDK v2.5)感到沮丧。当我启动我的应用程序,快速退出,然后重新启动应用程序,应用程序短暂加载,闪烁黑屏,然后停留在黑屏上。黑屏停留在那里直到我按下主页按钮,此时我可以正常重启应用程序。我进一步研究了这一点,结果发现app状态委托的命令顺序错误:

  1. applicationDidBecomeActive // app第一次完成加载
  2. applicationWillResignActive // app开始辞职
  3. applicationWillEnterForeground //此时,我已经快速重启了应用程序,这称为
  4. applicationDidEnterBackground //调用此委托时,屏幕变黑
  5. applicationDidEnterBackground //在屏幕暂停一段时间后再次按下主页按钮时会调用此方法。
  6. 所以我认为这意味着一旦我点击主页按钮,一些进程需要更长的时间来结束,如果我再次尝试再次启动应用程序,则会出现一些非常奇怪的行为。如果我等待几秒钟重启应用程序,应用程序就会正常运行。

    为了演示这个问题,我创建了我能想到的最简单的应用程序,我将在此处发布。我用XCode 3.2.3构建了这个,在4.0版本中直接在我的iphone设备(iphone 4)上。 这很重要,因为我无法在模拟器上重现此问题。您可以通过创建一个名为simpleApp的新导航项目并使用您自己的Flurry API密钥删除此代码来重现此应用程序当然。 这是simpleAppAppDelegate.m:

    #import "simpleAppAppDelegate.h"
    #import "RootViewController.h"
    #import "FlurryAPI.h"
    
    
    @implementation simpleAppAppDelegate
    
    @synthesize window;
    @synthesize navigationController;
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
        [FlurryAPI startSession:@"<your api key here>"];    
    
        [window addSubview:navigationController.view];
        [window makeKeyAndVisible];
    
        return YES;
    }
    
    
    - (void)applicationWillResignActive:(UIApplication *)application {
        printf("applicationWillResignActive\n");
    }
    
    
    - (void)applicationDidEnterBackground:(UIApplication *)application {
        printf("applicationDidEnterBackground\n");
    }
    
    
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        printf("applicationWillEnterForeground\n");
    }
    
    
    - (void)applicationDidBecomeActive:(UIApplication *)application {
        printf("applicationDidBecomeActive\n");
    }
    
    
    - (void)applicationWillTerminate:(UIApplication *)application {
        printf("applicationWillTerminate\n");
    }
    
    - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    }
    
    - (void)dealloc {
        [navigationController release];
        [window release];
        [super dealloc];
    }
    
    @end
    

    这是simpleAppAppDelegate.h:

    #import <UIKit/UIKit.h>
    
    @interface simpleAppAppDelegate : NSObject <UIApplicationDelegate> {
    
        UIWindow *window;
        UINavigationController *navigationController;
    }
    
    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
    
    @end
    

    所以无论如何,因为有很多应用程序使用Flurry,我觉得我必须缺少一些非常基本的东西。令我难以置信的是,我没有找到任何人抱怨这个特殊问题。 此外,这与先前版本中的应用程序似乎立即启动,黑色几秒钟,然后正常恢复的问题不同。通过调用[FlurryAPI setSessionReportsOnCloseEnabled:false]解决了这个问题;在我设置会话之后,但在这种情况下这没有帮助。

    无论如何,还有其他人有这个问题吗?我真的希望这对我来说只是一个愚蠢的错误。我很高兴使用Flurry但这样的事情会导致我的应用被拒绝。

4 个答案:

答案 0 :(得分:6)

我写了关于这个的Flurry,他们很快就回复我,他们会调查这个。大约一个星期后,他们回信说他们在v2.6修复了它,现在可用。我似乎无法重现这个问题。

不是说我很棒或者什么,但我还是单枪匹马地解决了这个问题。

答案 1 :(得分:2)

我不确定是否应该在对原帖发表评论时回答我自己的问题或发表回答,但无论如何这里都是答案:

乱舞乱了,这个苹果开发论坛帖子已经被其他人确认了(你需要一个账号才能登录):https://devforums.apple.com/thread/56339?tstart=0

这里希望Flurry尽快推出新版本,我真的很想将他们的产品整合到我的应用程序中。

答案 2 :(得分:2)

我匆匆忙忙地接受了这个。版本2.7也存在问题但是:

[FlurryAPI setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose];

默认情况下,此选项处于启用状态。启用后,Flurry将尝试在退出应用程序时发送会话数据,以及应用程序启动时通常会发送的会话数据。这将提高应用程序分析的更新速度,但可以延长因网络延迟而导致的应用程序终止过程。在某些情况下,网络延迟可能导致应用程序崩溃。

答案 3 :(得分:1)

我们刚刚发布了应该解决此问题的新版iPhone Flurry SDK。请下载此新SDK,如果它解决了您遇到的问题,请告诉我们。

- 此致

-Sheila

乱舞支持