Приложение зависает при перезагрузке с последней версией Flurry SDK и ios4

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

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

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

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

А вот и простой AppAppDelegate.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, но что-то подобное может привести к тому, что мое приложение будет отклонено.


person Rick    schedule 03.07.2010    source источник
comment
Могу подтвердить, что последнее обновление API решает проблему!   -  person hinderberg    schedule 19.07.2010
comment
Эта проблема все еще существует сегодня с последним SDK Flurry.   -  person amykaroline    schedule 11.07.2012


Ответы (4)


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

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

person kuma    schedule 14.07.2010

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

[FlurryAPI setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose];

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

person Pacu    schedule 30.10.2010

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

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

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

person Rick    schedule 07.07.2010

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

-- Искренне,

-Шейла

Шквал Поддержка

person Sheila    schedule 13.07.2010
comment
2.7 вылетает как при загрузке, так и при загрузке приложения. Любое обновление исправления для 2.7? - person stitz; 08.12.2010
comment
Нет, это не так... когда я быстро переключаюсь обратно в приложение, оно зависает на несколько секунд. - person Chris Van Buskirk; 16.02.2011