質問

TestFlight.com SDKとFlurry.com SDKの両方を使用して、未解決の例外を追跡しています。問題は、TestFlight.com SDKを追加した後、Flurryによって例外がピックアップされないことです。

未処理の例外が発生したときにトリガーされるメソッドは次のように見えます。

void uncaughtExceptionHandler(NSException *exception) 
{
    [FlurryAnalytics logError:@"ERROR_NAME" message:@"ERROR_MESSAGE" exception:exception];
}

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{    
    #if !TARGET_IPHONE_SIMULATOR
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

    struct sigaction newSignalAction;
    memset(&newSignalAction, 0, sizeof(newSignalAction));
    newSignalAction.sa_handler = &signalHandler;
    sigaction(SIGABRT, &newSignalAction, NULL);
    sigaction(SIGILL, &newSignalAction, NULL);
    sigaction(SIGBUS, &newSignalAction, NULL);

    [FlurryAnalytics startSession:kFlurryKey];
    [TestFlight takeOff:kTestflightKey];    

    [[UIApplication sharedApplication]
     registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                     UIRemoteNotificationTypeSound |
                                     UIRemoteNotificationTypeAlert)];    
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;    
    #endif
    .
    .
    .

TestFlight.comがどのようにそれを行うかはわかりませんが、登録されたメソッドを実行せずに例外を傍受し、データを登録するようです。

これらの両方が共存する方法はありますか?

役に立ちましたか?

解決

TestFlightApp.comチームから、これが既知の問題であることを確認しました。彼らは、彼らが言った次のバージョンで修正することを望んでいます。

他のヒント

これを直接テストすることはできませんが TestFlightドキュメント これを言っているようです:

cont countの例外または信号ハンドラーを使用する場合は、離陸を呼び出す前にハンドラーをインストールします。その後、私たちのSDKは、私たちの実行中にハンドラーに電話します。

彼らはいくつかを与えます 例コード これはあなたがこれを機能させるのに役立つかもしれません。

ブログで解決策を見つけましたが、それがFlurryにも機能するかどうかはわかりませんが、[testflight adeakeff:@"key"]メソッドの後に2回、Uninstallcrashhandlersメソッド(testflight.hで宣言)を呼び出すことです。クラッシュレポートに使用する他のサービス。 TestFlightとCrashlyticsの例のコードを参照してください

TestFlightのクラッシュレポートを無効にするのは非常に簡単です。 appdelegate.mに含まれる次のコードを追加します。

...
#import TestFlight.h

// Function prototype for UninstallCrashHandler
extern void UninstallCrashHandlers(BOOL restore);

Didfinishlaunchingwithoptionsでは、最初にこの方法を呼び出して、次のようにはyesで、次に次のように呼び出します。

- (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [TestFlight takeOff:@"<TestFlightKey>"];

  UninstallCrashHandlers(NO);
  UninstallCrashHandlers(YES);

  [Crashlytics startWithAPIKey:@"<CrashlyticsKey>"];

  return YES;
}

参照: http://www.grahamdennis.me/blog/2012/10/21/how-to-disable-testflights-crash handlers/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top