Firebase Crashlytics kilitlenme raporlarınızı özelleştirin


Crashlytics kontrol panelinde bir sorunu tıklayarak ayrıntılı bir etkinlik raporu alabilirsiniz. Bu raporları, uygulamanızda neler olduğunu ve Crashlytics'e bildirilen etkinliklerle ilgili koşulları daha iyi anlamanıza yardımcı olacak şekilde özelleştirebilirsiniz.

  • Uygulamanız Google Analytics için Firebase SDK'sını kullanıyorsa ekmek kırıntıları günlüklerini otomatik olarak alın. Bu günlükler, uygulamanızda Crashlytics tarafından toplanan bir etkinliğe yol açan kullanıcı işlemlerini görmenizi sağlar.

  • Otomatik kilitlenme raporlamasını devre dışı bırakın ve kullanıcılarınız için etkinleştirme raporlamasını etkinleştirin. Crashlytics'ün varsayılan olarak uygulamanızın tüm kullanıcılarının kilitlenme raporlarını otomatik olarak topladığını unutmayın.

Rapor istisnaları

Yakalanan istisnaları bildirme

Beklenen istisnalarınız varsa Crashlytics SDK'sının bunları önemli olmayan etkinlikler olarak bildirmesini sağlayabilirsiniz. Bu etkinlikler cihaza kaydedilir ve ardından bir sonraki kritik etkinlik raporuyla birlikte veya son kullanıcı oyunu yeniden başlattığında gönderilir.

Aşağıdaki yöntemi kullanarak C#'de istisnaları günlüğe kaydedebilirsiniz:

Crashlytics.LogException(Exception ex);

Beklenen istisnaları oyununuzun try/catch bloklarına kaydedebilirsiniz:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

Yakalanmayan istisnaları bildirme

Oyununuzu kilitlemeyen tutuklanmayan istisnalar (ör. oyun mantıkındaki yakalanmayan C# istisnaları) için Crashlytics.ReportUncaughtExceptionsAsFatal mülkünü true olarak ayarlayarak Crashlytics SDK'sının bunları Unity projenizde Crashlytics'i başlattığınız önemli etkinlikler olarak bildirmesini sağlayabilirsiniz. Bu etkinlikler, son kullanıcının oyunu yeniden başlatmasına gerek kalmadan Crashlytics'e gerçek zamanlı olarak raporlanır.

Bu yakalanmayan istisnaların önemli olaylar olarak raporlanması, kilitlenme içermeyen kullanıcı istatistiklerinizde ve hız uyarılarında sayılacağı anlamına gelir.

Yerel kilitlenmelerin her zaman önemli olaylar olarak raporlandığını unutmayın. Bu etkinlikler cihaza kaydedilir ve son kullanıcı oyunu yeniden başlattığında gönderilir.

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

Bellek bozulması sorunlarını ayıklamak için GWP-ASan raporlarını ekleme

IL2CPP kullanan Android uygulamaları için Crashlytics, GWP-ASan raporlarını toplayarak yerel bellek hatalarından kaynaklanan kilitlenmelerde hata ayıklamanıza yardımcı olabilir. Bellekle ilgili bu hatalar, uygulamanızdaki bellek bozulmasıyla ilişkilendirilebilir. Bu durum, uygulama güvenlik açıklarının başlıca nedenidir.

  • Bu verileri, Crashlytics kontrol panelinde bir sorunun ayrıntılarını tıkladığınızda yeni bir "Bellek yığın izlemeleri" sekmesinde görüntüleyebilirsiniz.

  • Bu verilerle ilgili tüm sorunları hızlıca görüntülemek için yeni "GWP-ASan raporu" sinyalini ve filtresini de kullanabilirsiniz.

Uygulamanız Unity için en son Crashlytics SDK'sını (v10.7.0 ve sonraki sürümler) kullanıyorsa ve GWP-ASan açıkça etkinleştirildiyse GWP-ASan bellek raporları alabilirsiniz (Android uygulama manifestinizi değiştirmeniz gerekir). Uygulamanızda C++ kodunuz varsa Android dokümanlarında yer alan örnek yerel kodu kullanarak GWP-ASan kurulumunuzu test edebilirsiniz.

Özel anahtar ekleme

Özel anahtarlar, uygulamanızın kilitlenmesine yol açan belirli durumu öğrenmenize yardımcı olur. İsteğe bağlı anahtar/değer çiftlerini kilitlenme raporlarınızla ilişkilendirebilir, ardından Firebase konsolunda kilitlenme raporlarını aramak ve filtrelemek için özel anahtarları kullanabilirsiniz.

  • Crashlytics kontrol panelinde özel bir anahtarla eşleşen sorunları arayabilirsiniz.
  • 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ü).

Birden çok kez çağrıldığında, mevcut anahtarların yeni değerleri değeri günceller ve bir kilitlenme kaydedildiğinde yalnızca en güncel değer yakalanır.

Crashlytics.SetCustomKey(string key, string value);

Özel günlük mesajları ekleme

Günlüğe kaydedilen mesajlar, kilitlenme verilerinizle ilişkilendirilir ve belirli bir kilitlenmeyi görüntülerken Firebase Crashlytics kontrol panelinde görünür.

Crashlytics.Log(string message);

Kullanıcı tanımlayıcıları ayarlama

Uygulamanızın son kullanıcısını kişisel bilgilerini ifşa etmeden veya iletmeden benzersiz bir şekilde tanımlamak için kimlik numarası, jeton veya karma oluşturma işlemi uygulanmış bir değer kullanabilirsiniz. Değeri boş bir dize olarak ayarlayarak da temizleyebilirsiniz. Bu değer, belirli bir kilitlenmeyi görüntülerken Firebase Crashlytics kontrol panelinde gösterilir.

Crashlytics.SetUserId(string identifier);

İçerik haritası günlüklerini alma

Kırıntı günlükleri, kullanıcının uygulamanızla yaptığı ve kilitlenme, ölümcül olmayan veya ANR etkinliğine yol açan etkileşimleri daha iyi anlamanızı sağlar. Bu günlükler, bir sorunu yeniden oluşturmaya ve hata ayıklama işlemine çalışırken faydalı olabilir.

Kırıntı günlükleri Google Analytics tarafından desteklenir. Bu nedenle, breadcrumb günlüklerini almak için Firebase projeniz için Google Analytics'i etkinleştirmeniz ve Google Analytics için Firebase SDK'sını uygulamanıza eklemeniz gerekir. Bu koşullar karşılandığında, bir sorunun ayrıntılarını görüntülediğinizde breadcrumb günlükleri, Günlükler sekmesindeki bir etkinliğin verilerine otomatik olarak eklenir.

Analytics SDK'sı, screen_view etkinliğini otomatik olarak günlüğe kaydeder. Bu sayede, içerik haritası günlükleri kilitlenme, ölümcül olmayan veya ANR etkinliğinden önce görüntülenen ekranların listesini gösterebilir. screen_view içerik haritası günlüğünde firebase_screen_class parametresi var.

Kırıntı günlükleri, etkinliğin parametre verileri de dahil olmak üzere kullanıcı oturumunda manuel olarak kaydettiğiniz tüm özel etkinliklerle de doldurulur. Bu veriler, kilitlenmeye, ölümcül olmayan bir kilitlenmeye veya ANR etkinliğine yol açan bir dizi kullanıcı işlemini göstermeye yardımcı olabilir.

Google Analytics verilerinin toplanmasını ve kullanılmasını kontrol edebileceğinizi unutmayın. Bu veriler arasında, içerik haritası günlüklerini dolduran veriler de bulunur.

Etkinleştirme raporlamasını etkinleştirme

Varsayılan olarak Crashlytics, uygulamanızın tüm kullanıcıları için kilitlenme raporlarını otomatik olarak toplar. Kilitlenme raporlamayı etkinleştirmelerine izin vererek kullanıcılara gönderdikleri veriler üzerinde daha fazla kontrol sağlayabilirsiniz.

Otomatik toplamayı devre dışı bırakmak ve Crashlytics'yi yalnızca seçili kullanıcılar için başlatmak istiyorsanız çalışma zamanında Crashlytics veri toplama geçersiz kılma işlevini çağırın. Üzerine yazma değeri, Crashlytics'ün raporları otomatik olarak toplayabilmesi için uygulamanızın her lansmanında devam eder. Otomatik kilitlenme raporlamasını devre dışı bırakmak için geçersiz kılma değeri olarak false'ü iletin. false olarak ayarlandığında yeni değer, uygulamanın bir sonraki çalıştırılmasına kadar uygulanmaz.

Crashlytics.IsCrashlyticsCollectionEnabled = true

Kilitlenme Analizleri verilerini yönetme

Kilitlenme Analizleri, anonimleştirilmiş yığın izlemelerinizi diğer Firebase uygulamalarından alınan izlemelerle karşılaştırarak ve sorununuzun daha büyük bir trendin parçası olup olmadığını bildirerek sorunları çözmenize yardımcı olur. Kilitlenme Analizleri, birçok sorun için kilitlenmeyi ayıklamanıza yardımcı olacak kaynaklar bile sağlar.

Kilitlenme Analizleri, yaygın kararlılık trendlerini belirlemek için birleştirilmiş kilitlenme verilerini kullanır. Uygulamanızın verilerini paylaşmak istemiyorsanız Firebase konsolundaki Crashlytics sorun listenizin üst kısmındaki Kilitlenme Analizleri menüsünden Kilitlenme Analizleri'ni devre dışı bırakabilirsiniz.