2012-02-21 8 views
7

Utilizziamo sia sdk testflight.com che fldd.com per tracciare eccezioni non gestite. Il problema è che nessuna eccezione è stata rilevata da Flurry dopo aver aggiunto il sdk di testflight.com.Implementazione di Testflight.com e Flurry.com gestione delle eccezioni

Il metodo innescato quando un'eccezione non gestita verifica si presenta così:

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 
    . 
    . 
    . 

io non sono sicuro di come testflight.com lo fa, ma sembra che intercettano l'eccezione e registrano i dati da soli, senza lasciando funzionare il metodo registrato?

C'è un modo per entrambi di coesistere?

+0

avete risolto questo ? – Jules

+0

Non ho cercato di essere onesto. Oggigiorno non sto codificando molto cacao, quindi il mio obiettivo è altrove. –

risposta

4

Ho ricevuto conferma dal team di Testflightapp.com che si tratta di un problema noto. Sperano di sistemarsi nella prossima versione che hanno detto.

+1

non è stato ancora risolto :( –

+0

Uso TestFlight, Crittercism e Flurry.Si verifica che TestFlight sovrascrive continuamente qualsiasi altra gestione delle eccezioni .Inoltre questo è ciò che mi ha detto Crittercism in quanto avevano lo stesso problema e lo hanno trovato tramite il debugging – Bot

0

Io non sono in grado di testare direttamente questo, ma la TestFlight documentation sembra dire questo:

Se utilizzati non gestite fanno eccezione o segnale gestori di installare i gestori prima di chiamare decollo. Il nostro SDK chiamerà il tuo gestore mentre il nostro è in esecuzione.

Loro danno anche un po 'di example code che potrebbe aiutarti a farlo funzionare.

+1

Sì, lo so, e lo sto facendo nel modo corretto, per quanto posso vedere. Modifica del post originale per mostrare come l'ho implementato nel mio delegato dell'applicazione. –

+0

Suggerirei di chiedere a TestFlight se sei sicuro che non funzioni, suppongo che debba essere un problema nel loro SDK che non passa il controllo al tuo gestore definito come loro dicono che dovrebbe. – mattjgalloway

+0

Sì, ho ricevuto un biglietto con loro e Flurry. Pubblicheremo la soluzione qui se sono in grado di trovare la ragione. –

0

Ho trovato una soluzione su un blog, non so se funziona anche per Flurry, quello che dice è chiamare il metodo UninstallCrashHandlers (dichiarato in TestFlight.h) due volte dopo il metodo [TestOfflight takeOff: @ "KEY"] e quindi registrare un altro servizio per il quale si desidera utilizzare per la segnalazione degli arresti anomali. Guarda il codice di esempio per TestFlight vs Crashlytics

Disabilitare la segnalazione di crash di TestFlight è abbastanza semplice. Aggiungere il seguente codice di tuo comprende in AppDelegate.m:

... 
#import TestFlight.h 

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

In didFinishLaunchingWithOptions chiamare questo metodo in primo luogo con NO e poi con SÌ, come:

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

    UninstallCrashHandlers(NO); 
    UninstallCrashHandlers(YES); 

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

    return YES; 
} 

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

+0

controlla e conferma questo, segnerò la risposta come soluzione. Non sto più sviluppando piattaforme mobili, quindi non sono in grado di controllarmi. –