2010-07-03 10 views
7

Tengo un problema frustrante con la última versión de Flurry (Flurry iPhone SDK v2.5). Cuando inicio mi aplicación, salgo rápidamente, luego reinicio la aplicación, la aplicación se carga brevemente, parpadea una pantalla negra y luego permanece en la pantalla en negro. La pantalla negra permanece allí hasta que presiono el botón de inicio, en ese punto puedo reiniciar la aplicación normalmente. Miré más en esto, y resulta que los delegados estatales aplicación están siendo llamados en el orden equivocado:La aplicación se cuelga al reiniciarse con el último SDK de Flurry y ios4

  1. applicationDidBecomeActive // ​​aplicación termina de cargar la primera vez que se inicia
  2. applicationWillResignActive // ​​aplicación a renunciar
  3. applicationWillEnterForeground // En este punto, he reiniciado rápidamente la aplicación, y esto se llama
  4. applicationDidEnterBackground // cuando este delegado se llama, la pantalla se queda en negro
  5. applicationDidEnterBackground // esto se llama cuando llegué a la casa botón de nuevo, después de que la pantalla ha estado colgando por un tiempo.

Así que lo que creo que esto significa es que algunos procesos tardan un poco más en concluir una vez que presiono el botón de inicio, y si trato de iniciar la aplicación demasiado rápido, hay un comportamiento muy extraño. Si espero unos segundos para reiniciar la aplicación, la aplicación se comporta normalmente.

Para demostrar este problema, creé la aplicación más simple que pude pensar, la cual publicaré aquí. Lo construí con XCode 3.2.3, en la versión 4.0 directamente en mi dispositivo iphone (iphone 4). Esto es importante, porque no pude reproducir este problema en el simulador. Puede reproducir esta aplicación creando un nuevo proyecto basado en navegación llamado simpleApp, y soltando este código, con su propia clave de Flurry API, por supuesto. Aquí es 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 

Y aquí es 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 

Así que de todos modos, debido a que muchas aplicaciones están utilizando la ráfaga siento que debo estar perdiendo algo muy básico. Lo que realmente perturba mi mente es que no he encontrado a nadie en absoluto quejándose de este problema en particular. Además, esto es diferente del problema en las versiones anteriores donde la aplicación parece comenzar de inmediato, ennegrecerse durante unos segundos y luego reanudarse normalmente. Ese problema se resolvió llamando a [FlurryAPI setSessionReportsOnCloseEnabled: false]; después de configurar la sesión, pero eso no ayuda en este caso.

De todos modos, ¿alguien más ha tenido este problema? Realmente espero que sea solo un estúpido error de mi parte. Estoy realmente emocionado de usar Flurry, pero algo así podría hacer que mi aplicación sea rechazada.

+0

Todavía tiene este problema hoy con el último SDK de Flurry – amykaroline

+0

Puede confirmar que la última actualización de la API resuelve el problema. – hinderberg

Respuesta

2

no estoy seguro de si debería estar respondiendo a mi propia pregunta en un comentario al post original o para publicar una respuesta, pero en cualquier caso, aquí está la respuesta:

ráfaga se rompe, se ha confirmado por otros en este hilo del foro apple dev (necesitas una cuenta para iniciar sesión): https://devforums.apple.com/thread/56339?tstart=0

Aquí está la esperanza de que Flurry obtenga una nueva versión pronto, realmente me gustaría incorporar sus ofertas a mi aplicación.

1

Acabamos de lanzar una nueva versión del iPhone Flurry SDK que debería resolver este problema.Descargue este nuevo SDK y avísenos si resuelve el problema que está enfrentando.

- Sinceramente,

-Sheila

Soporte ráfaga

+0

2.7 bloqueos en la carga y en la carga de la aplicación. ¿Alguna actualización de una solución para 2.7? – stitz

+0

No, no ... cuando vuelvo rápidamente a la aplicación, se cuelga durante unos segundos. –

6

escribí ráfaga de esto y se volvió a mí muy rápidamente que se verían en esto. Alrededor de una semana después, respondieron y dijeron que lo arreglaron en v2.6, que ahora está disponible. Parece que ya no puedo reproducir el problema.

Por no decir que soy genial o lo que sea, pero de alguna manera solucioné este error.

2

Tomo esto de ráfaga. La versión 2.7 también tiene el problema pero:

[FlurryAPI setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose]; 

Esta opción está activada por defecto. Cuando está habilitado, Flurry intentará enviar datos de la sesión cuando la aplicación se cierre tan bien como lo hace normalmente cuando se inicia la aplicación. Esto mejorará la velocidad a la que se actualizan los análisis de la aplicación, pero puede prolongar el proceso de finalización de la aplicación debido a la latencia de la red. En algunos casos, la latencia de la red puede hacer que la aplicación se bloquee.

Cuestiones relacionadas