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

Ric*_*ick 7 flurry ios4

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

  1. applicationDidBecomeActive // app第一次完成加载
  2. applicationWillResignActive // app开始辞职
  3. applicationWillEnterForeground //此时,我已经快速重启了应用程序,并调用了它
  4. applicationDidEnterBackground //调用此委托时,屏幕变黑
  5. applicationDidEnterBackground //当屏幕挂起一段时间后再次点击主页按钮时会调用此方法.

所以我认为这意味着一旦我点击主页按钮,一些进程需要更长的时间来结束,如果我再次尝试再次启动应用程序,则会出现一些非常奇怪的行为.如果我等待几秒钟重新启动应用程序,该应用程序将正常运行.

为了演示这个问题,我创建了我能想到的最简单的应用程序,我将在此处发布.我用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
Run Code Online (Sandbox Code Playgroud)

这里是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
Run Code Online (Sandbox Code Playgroud)

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

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

小智 6

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

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


小智 2

我不确定我是否应该在对原始帖子的评论中回答我自己的问题或发布答案,但无论如何,这就是答案:

Flurry 已损坏,已在此 Apple 开发论坛线程上得到其他人的确认(您需要一个帐户才能登录):https://devforums.apple.com/thread/56339 ?tstart=0

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