Crashlytics kontrol panelinde bir sorunu tıklayıp ayrıntılı bilgi edinebilirsiniz etkinlik raporu. Bu raporları, özel kampanyaları daha iyi anlamanıza yardımcı olacak şekilde özelleştirebilirsiniz. uygulamanızda neler olduğunu ve kendilerine bildirilen etkinliklerle ilgili koşulları Crashlytics
Uygulamanızdan özel anahtarları özel günlük mesajları ve kullanıcı tanımlayıcıları.
İstisnaları Crashlytics kullanıcısına bildirin.
Uygulamanız Google Analytics için Firebase SDK'sı. Bu günlükler, Uygulamanızda Crashlytics tarafından toplanan bir etkinlikle sonuçlanan kullanıcı işlemleri.
Otomatik kilitlenme raporlamasını kapatın ve Kullanıcılarınız için kayıt raporlamasını etkinleştirmeniz gerekir. Ancak, Varsayılan ayar olan Crashlytics, tüm kilitlenme raporlarını otomatik olarak toplar. kullanıcılara ulaşabiliyoruz.
Özel anahtar ekleme
Özel anahtarlar, kilitlenmeye yol açan uygulama durumunu öğrenmenize yardımcı olur. Rastgele anahtar/değer çiftlerini kilitlenme raporlarınızla ilişkilendirebilir ve ardından, Firebase konsolunda kilitlenme raporlarını aramak ve filtrelemek için özel anahtarları kullanın.
- Crashlytics kontrol panelinde sorunları arayabilirsiniz eşleşen yeni bir etiket oluşturabilirsiniz.
- Konsolda belirli bir sorunu incelerken her etkinlikle ilişkili özel anahtarları görüntüleyebilir (Anahtarlar alt sekmesi) ve hatta etkinlikleri özel anahtarlara göre filtreleyebilirsiniz (sayfanın üst kısmındaki Filtre menüsü).
Anahtar/değer çiftlerini ayarlamak için setCustomValue
yöntemini kullanın. Örneğin:
Swift
// Set int_key to 100. Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key") // Set str_key to "hello". Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")
Objective-C
Tam sayılar, boole değerleri veya kayan noktalı değerleri ayarlarken değeri @(value)
olarak kutulayın.
// Set int_key to 100. [[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"]; // Set str_key to "hello". [[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];
Mevcut bir anahtarın değerini, anahtarı ve ayarı çağırarak da değiştirebilirsiniz farklı bir değere ayarlayabilirsiniz. Örneğin:
Swift
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key") // Set int_key to 50 from 100. Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")
Objective-C
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"]; // Set int_key to 50 from 100. [[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];
setCustomKeysAndValues
yöntemini kullanarak toplu anahtar/değer çiftlerini
Tek parametre olarak NSDictionary:
Swift
let keysAndValues = [ "string key" : "string value", "string key 2" : "string value 2", "boolean key" : true, "boolean key 2" : false, "float key" : 1.01, "float key 2" : 2.02 ] as [String : Any] Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)
Objective-C
NSDictionary *keysAndValues = @{@"string key" : @"string value", @"string key 2" : @"string value 2", @"boolean key" : @(YES), @"boolean key 2" : @(NO), @"float key" : @(1.01), @"float key 2" : @(2.02)}; [[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];
Özel günlük mesajları ekleyin
Bir kilitlenmeye yol açan etkinliklerle ilgili daha fazla bağlam bilgisi sağlamak için özel Crashlytics günlüklerini kullanabilirsiniz. Crashlytics, günlükleri ilişkilendirir bu verileri kilitlenmenizi sağlar ve uygulamanın Crashlytics sayfasında Firebase konsolunda, Günlükler sekmesi altında.
Swift
Sorunların belirlenmesine yardımcı olması için log()
veya log(format:, arguments:)
kullanın. Şu durumda:
mesaj içeren kullanışlı bir günlük çıkışı almak istiyorsanız
log()
,
CustomStringConvertible
log()
, kendisi için tanımladığınız açıklama özelliğini döndürür
izin verir. Örneğin:
Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")
Çağrıdan döndürülen .log(format:, arguments:)
biçim değerleri
getVaList()
. Örneğin:
Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))
log()
veya log(format:, arguments:)
'un nasıl kullanılacağı hakkında daha fazla bilgi için Crashlyticsreferans dokümanlarına bakın.
Objective-C
Sorunların belirlenmesine yardımcı olması için log
veya logWithFormat
kullanın.
mesaj içeren kullanışlı bir günlük çıkışı almak istiyorsanız
iki yöntemin de description
örnek özelliğini geçersiz kılması gerekir.
Örneğin:
[[FIRCrashlytics crashlytics] log:@"Simple string message"]; [[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict]; [[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];
log
ve logWithFormat
işlemlerinin nasıl kullanılacağı hakkında daha fazla bilgi için
Crashlytics referans belgeleri.
Kullanıcı tanımlayıcılarını ayarlama
Bir sorunu teşhis etmek için genellikle hangi kullanıcılarınızın belirli bir kilitlenmeyi yaşadığını bilmek yararlıdır. Crashlytics, kilitlenme raporlarınızda kullanıcıları anonim olarak tanımlamanın bir yolunu içerir.
Raporlarınıza kullanıcı kimlikleri eklemek için bir kimlik numarası, jeton veya karma oluşturma işlemi uygulanmış değer biçimi:
Swift
Crashlytics.crashlytics().setUserID("123456789")
Objective-C
[[FIRCrashlytics crashlytics] setUserID:@"123456789"];
Bir kullanıcı tanımlayıcısını ayarladıktan sonra onu temizlemeniz gerekirse değeri şu şekilde sıfırlayın: boş bir dize. Kullanıcı tanımlayıcısı temizlendiğinde mevcut Crashlytics kayıtları kaldırılmaz. Bir kullanıcıyla ilişkili kayıtları silmeniz gerekiyorsa Kimliği, Firebase destek ekibiyle iletişime geçin.
Önemli olmayan istisnaları bildirin
Crashlytics, uygulamanızın kilitlenmelerini otomatik olarak bildirmenin yanı sıra, önemli olmayan istisnaları kaydedersiniz ve uygulamanız bir dahaki sefere bu istisnaları size gönderir lansman sonrasında gerçekleşebilir.
NSError
nesneyi şurada kaydederek önemli olmayan istisnaları kaydedebilirsiniz:
recordError
yöntemini çağırın. recordError
, şunu çağırarak ileti dizisinin çağrı yığınını yakalar:
[NSThread callStackReturnAddresses]
.
Swift
Crashlytics.crashlytics().record(error: error)
Objective-C
[[FIRCrashlytics crashlytics] recordError:error];
recordError
yöntemini kullanırken NSError
konusunu anlamak önemlidir.
yapısı ve Crashlytics uygulamasının kilitlenmeleri gruplandırmak için verileri nasıl kullandığı hakkında bilgi verilmektedir. Yanlış
recordError
yönteminin kullanılması, öngörülemez davranışlara neden olabilir ve
Crashlytics neden, uygulamanız için günlüğe kaydedilen hataların raporlanmasını sınırlandırıyor.
NSError
nesnesinin üç bağımsız değişkeni vardır:
domain: String
code: Int
userInfo: [AnyHashable : Any]? = nil
Yığın izleme analiziyle gruplanan önemli kilitlenmelerin aksine, günlüğe kaydedilen hatalar
domain
ve code
grubuna göre gruplandırılır. Bu, proje yönetiminin
önemli kilitlenmeler ile günlüğe kaydedilen hatalar arasındaki
anlamına bakın. Örneğin:
Swift
let userInfo = [ NSLocalizedDescriptionKey: NSLocalizedString("The request failed.", comment: ""), NSLocalizedFailureReasonErrorKey: NSLocalizedString("The response returned a 404.", comment: ""), NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString("Does this page exist?", comment: ""), "ProductID": "123456", "View": "MainView" ] let error = NSError.init(domain: NSCocoaErrorDomain, code: -1001, userInfo: userInfo)
Objective-C
NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"The request failed.", nil), NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The response returned a 404.", nil), NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Does this page exist?", nil), @"ProductID": @"123456", @"View": @"MainView", }; NSError *error = [NSError errorWithDomain:NSCocoaErrorDomain code:-1001 userInfo:userInfo];
Yukarıdaki hatayı günlüğe kaydettiğinizde şuna göre gruplandırılmış yeni bir sorun oluşturulur:
NSSomeErrorDomain
ve -1001
. Aynı
alan ve kod değerleri aynı sorun altında gruplandırılır. İçinde bulunduğu veriler
userInfo
nesnesi anahtar/değer çiftlerine dönüştürülür ve bu nesnel
anahtar/günlükler bölümü kullanılabilir.
Günlükler ve özel anahtarlar
Kilitlenme raporlarında olduğu gibi, bağlam bilgisi eklemek için günlükleri ve özel anahtarları yerleştirebilirsiniz.
NSError
. Ancak, günlüklerin eklendiği veriler arasında bir fark vardır
kayıtlı hatalarla karşılaştırabilirsiniz. Bir kilitlenme gerçekleştiğinde uygulama yeniden başlatıldığında,
Crashlytics tarafından diskten alınan günlük kayıtları,
kilitlenmenin zamanı geldi. Bir NSError
günlüğe kaydedildiğinde uygulama hemen
feshedebilir. Crashlytics, yalnızca
bir sonraki uygulama lansmanında
belirlemeniz gerekir ve diskteki günlükler için
bir NSError
kaydedildikten sonra, alakalı tüm bilgilerin
günlükler, Crashlytics raporu
olanak tanır. NSErrors
günlük kaydını yaparken ve günlükleri kullanırken bu dengeyi aklınızda bulundurun.
ekleyebilirsiniz.
Performansla ilgili konular
NSError
günlüğe kaydetmenin oldukça pahalı olabileceğini unutmayın. O dönemde ki
çağrıyı yaparsa Crashlytics, geçerli ileti dizisinin çağrı yığınını
bu süreçte ele alacağız. Bu işlem, özellikle DWARF açma işlemini destekleyen mimarilerde (arm64 ve x86) CPU ve G/Ç yoğun olabilir.
Geri alma işlemi tamamlandıktan sonra bilgiler diske eşzamanlı olarak yazılır.
Bu, sonraki satırın çökmesi durumunda veri kaybını önler.
Bu API'yi arka plan iş parçacığında çağırmak güvenli olsa da bu çağrının başka bir kuyruğa gönderilmesinin mevcut yığın izleme bağlamını kaybettiğini unutmayın.
NSExceptions nedir?
Crashlytics, NSException
için günlük kaydı ve kayıt olanağı sunmuyor.
sağlayabilir. Genel olarak Cocoa ve Cocoa Touch API'leri
güvenli değildir. Bu, @catch
'ün son derece dikkatli bir şekilde kullanıldığında bile işleminizde istenmeyen çok ciddi yan etkileri olabileceği anlamına gelir. Hiçbir zaman
kodunuzda @catch
ifadeleri kullanın. Daha fazla bilgi için lütfen
Apple'ın belgeleri
çok önemsiyor.
Yığın izlemelerini özelleştirme
Uygulamanız, yerel olmayan bir ortamda (ör. C++ veya Unity) çalışıyorsa Uygulamanızın yerel istisnasındaki kilitlenme meta verilerini bildirmek için İstisna Modeli API'sini biçimindedir. Bildirilen istisnalar önemli olmayanlar olarak işaretlenir.
Swift
var ex = ExceptionModel(name:"FooException", reason:"There was a foo.") ex.stackTrace = [ StackFrame(symbol:"makeError", file:"handler.js", line:495), StackFrame(symbol:"then", file:"routes.js", line:102), StackFrame(symbol:"main", file:"app.js", line:12), ] crashlytics.record(exceptionModel:ex)
Objective-C
FIRExceptionModel *model = [FIRExceptionModel exceptionModelWithName:@"FooException" reason:@"There was a foo."]; model.stackTrace = @[ [FIRStackFrame stackFrameWithSymbol:@"makeError" file:@"handler.js" line:495], [FIRStackFrame stackFrameWithSymbol:@"then" file:@"routes.js" line:102], [FIRStackFrame stackFrameWithSymbol:@"main" file:@"app.js" line:12], ]; [[FIRCrashlytics crashlytics] recordExceptionModel:model];
Özel yığın çerçeveleri yalnızca şu adreslerle de başlatılabilir:
Swift
var ex = ExceptionModel.init(name:"FooException", reason:"There was a foo.") ex.stackTrace = [ StackFrame(address:0xfa12123), StackFrame(address:12412412), StackFrame(address:194129124), ] crashlytics.record(exceptionModel:ex)
Objective-C
FIRExceptionModel *model = [FIRExceptionModel exceptionModelWithName:@"FooException" reason:@"There was a foo."]; model.stackTrace = @[ [FIRStackFrame stackFrameWithAddress:0xfa12123], [FIRStackFrame stackFrameWithAddress:12412412], [FIRStackFrame stackFrameWithAddress:194129124], ]; [[FIRCrashlytics crashlytics] recordExceptionModel:model];
İçerik haritası günlüklerini alma
İçerik haritası günlükleri, kullanıcının kilitlenme, önemli olmayan veya ANR etkinliğine neden olan sorunları içerir. Bu günlükler yardımcı olabilir.
İçerik haritası günlükleri, Google Analytics tarafından desteklenmektedir. Bu nedenle, içerik haritası günlüklerini almak için gerek Google Analytics'i etkinleştirme Firebase projeniz için Google Analytics için Firebase SDK'sını ekleyin ekleyin. Bu şartlar karşılandıktan sonra, içerik haritası günlükleri otomatik olarak ayrıntıları görüntülediğinizde Günlükler sekmesinde bir etkinlik verilerine eklenir bir sonucudur.
Analytics SDK'sı
screen_view
etkinliğini otomatik olarak günlüğe kaydeder
Bu, içerik haritası günlüklerinin
veya ANR olayını kapsar. screen_view
içerik haritası günlüğü
firebase_screen_class
parametresinden yararlanın.
İçerik haritası günlükleri ayrıca özel etkinlikler oluşturabilirsiniz. oturumuna ait verileri toplar. Bu veriler, seçtiğiniz seriyi göstermeye yardımcı olabilir Kilitlenme, önemli olmayan veya ANR etkinliğiyle sonuçlanan kullanıcı işlemlerinin sayısı.
Şunları yapabilirsiniz: Google Analytics verilerinin toplanmasını ve kullanımını kontrol edebilir, Bu işlem, içerik haritası günlüklerini dolduran verileri içerir.
Kayıt raporlamayı etkinleştir
Varsayılan olarak Crashlytics, tüm mobil cihazlarınız için kilitlenme raporlarını kullanıcılara ulaşabiliyoruz. Kullanıcılara gönderdikleri veriler üzerinde daha fazla kontrol sağlamak için aşağıdakileri etkinleştirebilirsiniz: otomatik raporlamayı devre dışı bırakarak ve yalnızca Crashlytics:
Info.plist
dosyanıza yeni bir anahtar ekleyerek otomatik toplamayı devre dışı bırakın:- Anahtar:
FirebaseCrashlyticsCollectionEnabled
- Değer:
false
- Anahtar:
Crashlytics verilerini çağırarak belirli kullanıcılar için veri toplamayı etkinleştirin koleksiyonu geçersiz kılmanın zamanı geldi. Üzeride yazılan değer, uygulamanızın lansmanlarında devam eder. Böylece Crashlytics raporları otomatik olarak toplayabilir.
Otomatik kilitlenme raporlamasını devre dışı bırakmak için geçersiz kılma değeri olarak
false
değerini iletin.false
olarak ayarlandığında yeni değer uygulamasını indirin.Swift
Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)
Objective-C
[[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];
Crash Insights verilerini yönetme
Crash Insights, anonimleştirilmiş yığınınızı karşılaştırarak sorunları çözmenize yardımcı olur diğer Firebase uygulamalarından gelen izleri izler ve sorununuzun büyük bir trendin parçası haline geldi. Crash Insights, sorunların çoğu için kaynak bile sağlar kilitlenmede hata ayıklamanıza yardımcı olur.
Kilitlenme Analizleri, yaygın kararlılık trendlerini belirlemek için birleştirilmiş kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmak istemezseniz Crash Insights'ı devre dışı bırakabilirsiniz Crashlytics sorun listenizin üst kısmındaki Kilitlenme Analizleri menüsünden Firebase konsolunda bulabilirsiniz.