Приложение зависает при перезагрузке с последней версией Flurry SDK и ios4 - PullRequest
7 голосов
/ 03 июля 2010

У меня неприятная проблема с последней версией Flurry (Flurry iPhone SDK v2.5).Когда я запускаю свое приложение, быстро завершаю работу, затем перезапускаю приложение, приложение ненадолго загружается, мерцает черный экран, а затем остается на черном экране.Черный экран остается там до тех пор, пока я не нажму кнопку «Домой», после чего я могу нормально перезапустить приложение.Я рассмотрел этот вопрос далее, и оказалось, что делегаты состояния приложения вызываются в неправильном порядке:

  1. applicationDidBecomeActive // ​​приложение завершает загрузку в первый раз
  2. applicationWillResignActive // ​​appначинает отставку
  3. applicationWillEnterForeground // В этот момент я быстро перезапустил приложение, и это называется
  4. applicationDidEnterBackground // Когда вызывается этот делегат, экран становится черным
  5. applicationDidEnterBackground // Это вызывается, когда я снова нажимаю кнопку «Домой», после того, как экран некоторое время зависает.

Итак, я думаю, это означает, что некоторым процессам требуется немного больше времени для переносакогда я нажимаю кнопку «Домой», и если я пытаюсь запустить приложение слишком быстро, происходит очень странное поведение.Если я подожду несколько секунд, чтобы перезапустить приложение, оно будет работать нормально.

Чтобы продемонстрировать эту проблему, я создал самое простое приложение, о котором я мог подумать, и которое я опубликую здесь.Я сделал это с помощью XCode 3.2.3, в версии 4.0 непосредственно на моем устройстве iphone (iphone 4). Это важно, потому что я не смог воспроизвести эту проблему на симуляторе. Вы можете воспроизвести это приложение, создав новый навигационный проект с именем simpleApp и добавив этот код, используя свой собственный ключ Flurry APIкурс.Вот простойAppAppDelegate.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 ]

6 голосов
/ 15 июля 2010

Я написал об этом Флурри, и они очень быстро ответили мне, что они изучат это. Примерно через неделю они ответили и сказали, что исправили это в версии 2.6, которая теперь доступна. Кажется, я больше не могу воспроизвести проблему.

Не сказать, что я потрясающий или что-то в этом роде, но я в одиночку исправил эту ошибку.

2 голосов
/ 30 октября 2010

Я взял это из суматохи.В версии 2.7 также есть проблема, но:

[FlurryAPI setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose];

Эта опция включена по умолчанию.При включении Flurry будет пытаться отправлять данные сеанса при выходе из приложения, как это обычно происходит при запуске приложения.Это улучшит скорость обновления аналитики вашего приложения, но может продлить процесс завершения приложения из-за задержки в сети.В некоторых случаях задержка в сети может привести к сбою приложения.

2 голосов
/ 07 июля 2010

Я не уверен, должен ли я отвечать на свой вопрос в комментарии к исходному сообщению или чтобы опубликовать ответ, но в любом случае вот ответ:

Шквал сломан, это былоПодтверждено другими в этой ветке форума Apple Dev (вам нужна учетная запись для входа в систему): https://devforums.apple.com/thread/56339?tstart=0

Мы надеемся, что Flurry скоро выпустит новую версию, я бы очень хотел включить их предложения в свое приложение.

1 голос
/ 14 июля 2010

Мы только что выпустили новую версию iPhone Flurry SDK, которая должна решить эту проблему. Загрузите этот новый SDK и сообщите нам, если он решит проблему, с которой вы столкнулись.

- С уважением,

-Sheila

Поддержка Flurry

...