2012-02-21 44 views
7

Chúng tôi đang sử dụng cả sdk testflight.com và sdurry.com để theo dõi các ngoại lệ chưa được xử lý. Vấn đề là không có trường hợp ngoại lệ được chọn bởi flurry sau khi chúng tôi thêm sdk testflight.com.Triển khai Testflight.com và xử lý ngoại lệ Flurry.com

Phương pháp kích hoạt khi một ngoại lệ unhandled xảy ra vẻ như thế này:

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

Tôi không chắc chắn như thế nào testflight.com hiện nó, nhưng nó có vẻ như họ chặn trừ và đăng ký dữ liệu cho bản thân mà không cho phép phương thức đăng ký được chạy?

Có cách nào để cả hai thứ này cùng tồn tại?

+0

sao bạn giải quyết này ? – Jules

+0

Tôi đã không cố gắng thành thật. Tôi không mã hóa nhiều cacao ngày nay, vì vậy sự tập trung của tôi là ở nơi khác. –

Trả lời

4

Tôi đã nhận được xác nhận từ nhóm Testflightapp.com rằng đây là sự cố đã biết. Họ hy vọng sẽ sửa chữa trong phiên bản tiếp theo họ nói.

+1

vẫn không cố định: ( –

+0

Tôi sử dụng TestFlight, Crittercism và Flurry. Hóa ra TestFlight liên tục ghi đè lên bất kỳ xử lý ngoại lệ nào khác .Tại đây là những gì Crittercism đã nói với tôi khi họ gặp vấn đề tương tự và tìm thấy điều này thông qua gỡ lỗi – Bot

0

Tôi không thể kiểm tra điều này trực tiếp, nhưng TestFlight documentation dường như nói điều này:

Nếu bạn sử dụng còn tự do ngoại lệ hoặc tín hiệu xử lý cài đặt bộ xử lý của bạn trước khi gọi cất cánh. SDK của chúng tôi sau đó sẽ gọi trình xử lý của bạn trong khi chúng tôi đang chạy.

Họ thậm chí còn cung cấp một số example code có thể giúp bạn làm việc này.

+1

Vâng, tôi biết, và tôi đang thực hiện nó theo đúng cách mà tôi có thể thấy. Chỉnh sửa bài đăng gốc để hiển thị cách tôi cũng đã triển khai nó trong ủy nhiệm ứng dụng của mình. –

+0

Tôi khuyên bạn nên hỏi TestFlight sau đó nếu bạn chắc chắn nó không hoạt động như tôi đoán nó phải là một vấn đề trong SDK của họ không vượt qua kiểm soát để xử lý định nghĩa của bạn như họ nói nó nên. – mattjgalloway

+0

Yea, đăng ký vé với họ và Flurry. Sẽ đăng giải pháp ở đây nếu họ có thể tìm ra lý do. –

0

Tôi đã tìm thấy giải pháp trên blog, không chắc chắn liệu nó có hoạt động cho Flurry hay không, những gì nó nói là gọi phương thức UninstallCrashHandlers (được khai báo trong TestFlight.h) hai lần sau phương thức [TakeFlight takeOff: @ "KEY"] , và sau đó đăng ký dịch vụ khác mà bạn muốn sử dụng để báo cáo sự cố. Xem mã ví dụ về TestFlight vs Crashlytics

Tắt báo cáo sự cố của TestFlight khá đơn giản. Thêm mã sau đây của bạn bao gồm trong AppDelegate.m:

... 
#import TestFlight.h 

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

Trong didFinishLaunchingWithOptions gọi phương pháp này đầu tiên với NO và sau đó với YES, như:

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

kiểm tra và xác nhận điều này, tôi sẽ đánh dấu câu trả lời là giải pháp. Tôi không còn phát triển cho nền tảng di động nữa, vì vậy tôi không thể tự kiểm tra. –