7

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 という名前の新しいナビゲーション ベースのプロジェクトを作成し、このコードをドロップします。もちろん、独自の 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

4 に答える 4

6

私はこの件について Flurry に手紙を書きましたが、彼らはすぐに私に連絡してきて、これを調査します。約 1 週間後、彼らは返信し、現在利用可能な v2.6 で修正したと述べました。もう問題を再現できないようです。

私が素晴らしいとか言うわけではありませんが、このバグを独力で修正しました。

于 2010-07-14T20:47:39.547 に答える
2

元の投稿へのコメントで自分の質問に答える必要があるのか​​ 、回答を投稿する必要があるのか​​ はわかりませんが、いずれにしても回答は次のとおりです。

Flurry が壊れていることは、この Apple dev フォーラムのスレッド (ログインするにはアカウントが必要です) で他の人によって確認されています: https://devforums.apple.com/thread/56339?tstart=0

Flurry がすぐに新しいバージョンをリリースすることを願っています。Flurry の製品を自分のアプリに組み込みたいと思っています。

于 2010-07-07T07:31:25.507 に答える
2

私はこれを慌ただしいものから取っています。バージョン 2.7 にも問題がありますが:

[FlurryAPI setSessionReportsOnCloseEnabled:(BOOL)sendSessionReportsOnClose];

このオプションはデフォルトでオンになっています。有効にすると、Flurry は、アプリの起動時と同様に、アプリの終了時にセッション データの送信を試みます。これにより、アプリケーション分析の更新速度が向上しますが、ネットワークの遅延によりアプリの終了プロセスが長くなる可能性があります。場合によっては、ネットワークの待ち時間が原因でアプリがクラッシュすることがあります。

于 2010-10-30T05:36:54.463 に答える
1

この問題を解決する新しいバージョンの iPhone Flurry SDK をリリースしました。この新しい SDK をダウンロードして、発生している問題が解決するかどうかをお知らせください。

- 心から、

-シーラ

フラリーサポート

于 2010-07-13T23:54:43.173 に答える