Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Visual Studio App Center, 30 Haziran 2026'ya kadar desteklenmeye devam edecek Analiz ve Tanılama özellikleri dışında 31 Mart 2025'te kullanımdan kaldırılmıştır. Daha fazla bilgi edinin.
App Center Kilitlenmeleri, uygulamanız her kilitlenişinde otomatik olarak bir kilitlenme günlüğü oluşturur. Günlük, ilk olarak cihazın depolama alanına yazılır ve kullanıcı uygulamayı tekrar başlattığında, kilitlenme raporu App Center'a gönderilir. Kilitlenmeleri toplamak hem beta hem de Google Play'e gönderilmiş canlı uygulamalar için çalışır. Çökme günlükleri, çökme sorununu çözmenize yardımcı olacak değerli bilgiler içerir.
Uygulamanızda SDK'yı henüz ayarlamadıysanız Başlarken bölümünü izleyin.
App Center Crashes'i kullandığınız yerlerde, dosyanın en üstüne aşağıdaki import'u ekleyin.
// Import App Center Crashes at the top of the file.
import Crashes from 'appcenter-crashes';
Test kilitlenmesi oluştur
App Center Kilitlenmeleri, SDK'nın kolay test edilmesi için bir test kilitlenmesi oluşturmanızı sağlayan bir API sağlar. Bu API yalnızca test/beta uygulamalarında kullanılabilir ve üretim uygulamalarında hiçbir şey yapmaz.
Crashes.generateTestCrash();
JavaScript çökmesi oluşturmak da kolaydır. JavaScript hatası oluşturan ve kilitlenmeye neden olan aşağıdaki satırı kodunuza ekleyin.
throw new Error('This is a test javascript crash!');
Tavsiye
Bu çökmenin App Center'a gönderilmesi için React Native uygulamanızın yayın modunda derlenmesi gerekir.
Uyarı
App Center şu anda Android React Native uygulamaları için JavaScript yığın izlerini açmak üzere kaynak haritalarını desteklememektedir.
Uyarı
throw JavaScript throw 'message' deyimini dize değeriyle (örneğin: ) önlemek en iyi yöntemdir.
throw Bunun yerine bir JavaScript Error (ör. : throw Error('message')).
Önceki kilitlenme hakkında daha fazla bilgi edinin
App Center Çökmesi, uygulamanızın çökmesi durumunda size daha fazla bilgi sağlayan iki API'si bulundurur.
Uygulama önceki oturumda düşük bellek uyarısı mı aldı?
SDK'yı başlattıktan sonra herhangi bir zamanda uygulamanın önceki oturumda bir bellek uyarısı almış olup olmadığını kontrol edebilirsiniz:
const hadLowMemoryWarning = await Crashes.hasReceivedMemoryWarningInLastSession();
Uyarı
Bazı durumlarda, belleği düşük olan bir cihaz olay göndermeyebilir.
Uygulama önceki oturumda kilitleniyor muydu?
SDK'yı başlattıktan sonra istediğiniz zaman uygulamanın önceki başlatmada kilitlenip kilitlenmediğini de kontrol edebilirsiniz:
const didCrash = await Crashes.hasCrashedInLastSession();
Bu, kilitlenme gerçekleştikten sonra uygulamanızın davranışını veya kullanıcı arabirimini ayarlamak istemeniz durumunda kullanışlıdır. Bazı geliştiriciler, kullanıcılarından özür dilemek için ek kullanıcı arabirimi göstermeyi veya bir kilitlenme oluştuktan sonra iletişim kurmanın yolunu seçmeyi tercih etti.
Son çökme ile ilgili ayrıntılar
Uygulamanız daha önce kilitlendiyse son kilitlenmeyle ilgili ayrıntıları alabilirsiniz.
const crashReport = await Crashes.lastSessionCrashReport();
App Center Kilitlenmelerinin kullanımını özelleştirin
App Center Kilitlenmeleri, geliştiricilerin App Center'a kilitlenme günlükleri göndermeden önce ve gönderirken ek eylemler gerçekleştirebilmesi için geri çağrılar (callbacks) sağlar.
JavaScript'te çökmeleri işlemek
Yöntemlerinizin Crash.setListener beklendiği gibi çalışması için uygulamanızın düzgün yapılandırılıp yapılandırılmamış olup olmadığını denetlemeniz gerekir.
- Projenin
ios/YourAppName/AppDelegate.mdosyasını açın ve[AppCenterReactNativeCrashes register];yerine[AppCenterReactNativeCrashes registerWithAutomaticProcessing];olduğunuzu doğrulayın. - Projenin
android/app/src/main/res/values/strings.xmldosyasını açın veappCenterCrashes_whenToSendCrashesöğesininASK_JAVASCRIPTolarak ayarlandığını doğrulayın.
Bu belgede olay dinleyicisinin tüm farklı geri çağrıları tek tek ele alınıyor, ancak tüm geri çağırmaları aynı anda tanımlayan bir olay dinleyicisi ayarlamanız gerekiyor.
Kilitlenme işlenmeli mi?
Belirli bir kilitlenmenin işlenmesi gerekip gerekmediğine karar vermek istiyorsanız bu geri çağırma işlevini uygulayın. Örneğin, yoksaymak isteyebileceğiniz ve App Center'a göndermek istemediğiniz bir sistem seviyesinde çökme olabilir.
Crashes.setListener({
shouldProcess: function (report) {
return true; // return true if the crash report should be processed, otherwise false.
},
// Other callbacks must also be defined at the same time if used.
// Default values are used if a method with return parameter isn't defined.
});
Uyarı
Bu özelliği kullanmak için uygulamanızı Çökme hizmetine uygun olarak düzgün bir şekilde yapılandırmanız gerekir.
Bu özellik JavaScript'te kilitlenmeleri işlemeye bağlıdır.
Kullanıcının hata raporu göndermek üzere onay isteyin
Kullanıcı gizliliği sizin için önemliyse, App Center'a kilitlenme raporu göndermeden önce kullanıcı onayı almanız gerekir. SDK, App Center Çökmeler modülüne herhangi bir çökme raporu göndermeden önce kullanıcı onayını beklemesini belirten bir geri çağırım sağlar.
Bunu yapmayı seçerseniz, kullanıcının onayını almak sizin sorumluluğundadır; örneğin, aşağıdaki seçeneklerden birini içeren bir iletişim kutusu istemi aracılığıyla: Her Zaman Gönder, Gönder ve Gönderme. Girişe bağlı olarak App Center Crashes'e ne yapması gerektiğini belirteceksiniz ve bu durumda kilitlenme uygun şekilde işlenecektir.
Uyarı
SDK bunun için bir iletişim kutusu görüntülemez, uygulamanın kullanıcı onayı istemek için kendi kullanıcı arabirimini sağlaması gerekir.
Aşağıdaki geri çağırma işlevi, SDK'ya kilitlenmeleri göndermeden önce kullanıcı onayını beklemesi için nasıl talimat vereceğinizi gösterir.
Crashes.setListener({
shouldAwaitUserConfirmation: function (report) {
// Build your own UI to ask for user consent here. SDK doesn't provide one by default.
// Return true if you built a UI for user consent and are waiting for user input on that custom UI, otherwise false.
return true;
},
// Other callbacks must also be defined at the same time if used.
// Default values are used if a method with return parameter isn't defined.
});
true döndürdüğünüzde, uygulamanızın kendi kodunuzu kullanarak kullanıcının iznini alması ve sonuca göre aşağıdaki API'yi kullanarak SDK'yı güncellemesi gerekir.
import Crashes, { UserConfirmation } from 'appcenter-crashes';
// Depending on the user's choice, call Crashes.notifyUserConfirmation() with the right value.
Crashes.notifyUserConfirmation(UserConfirmation.DONT_SEND);
Crashes.notifyUserConfirmation(UserConfirmation.SEND);
Crashes.notifyUserConfirmation(UserConfirmation.ALWAYS_SEND);
Uyarı
Bu özelliği kullanmak için uygulamanızı Crash hizmeti ile uyumlu olacak şekilde doğru şekilde yapılandırın. Bu özellik JavaScript'te kilitlenmeleri işlemeye bağlıdır.
Kilitlenme günlüğü için gönderim durumu hakkında bilgi edinme
Bazen uygulamanızın çökme durumunu bilmek istersiniz. Yaygın kullanım örneklerinden biri, kullanıcılara uygulamanızın kilitlenme raporu gönderdiğini bildiren kullanıcı arabirimini göstermek veya başlatma işleminden sonra uygulamanızın hızla kilitlenmesi durumunda kilitlenme günlüklerinin gönderildiğinden emin olmak için uygulamanın davranışını ayarlamak istemenizdir. App Center Çökmeleri, durum hakkında bildirim almak için uygulamanızda kullanabileceğiniz üç farklı geri çağırma işlevine sahiptir.
Bunu yapmak için, aşağıdaki örnekte gösterildiği gibi kodunuzda bir olay dinleyicisi tanımlayın:
Crashes.setListener({
onBeforeSending: function (report) {
// called after Crashes.process and before sending the crash.
},
onSendingSucceeded: function (report) {
// called when crash report sent successfully.
},
onSendingFailed: function (report) {
// called when crash report couldn't be sent.
}
// Other callbacks must also be defined at the same time if used.
// Default values are used if a method with return parameter isn't defined.
});
Tüm geri çağırmalar isteğe bağlıdır. Olay dinleyicisi nesnesinde 3 yöntemin tümünü sağlamanız gerekmez, örneğin yalnızca onBeforeSendinguygulayabilirsiniz.
Uyarı
Bu özelliği kullanmak için uygulamanızı Çökme hizmetine uygun olarak düzgün bir şekilde yapılandırmanız gerekir.
Bu özellik JavaScript'te kilitlenmeleri işlemeye bağlıdır.
Uyarı
Birden çok kez çağrılırsa Crashes.setListener , sonuncusu kazanır; daha önce tarafından Crashes.setListenerayarlanan dinleyicileri geçersiz kılar.
Almak onSendingFailed, 4xx kodu gibi kurtarılamaz bir hata oluştuğu anlamına gelir. Örneğin, 401 yanlış olduğu anlamına gelir appSecret .
Bu geri çağırma bir ağ sorunu olduğunda tetiklenmez. Bu durumda SDK yeniden denemeye devam eder (ve ayrıca ağ bağlantısı kapatılırken yeniden denemeleri duraklatır). Uç noktada ağ sorunları veya kesinti olması ve uygulamayı yeniden başlatmanız durumunda işlem onBeforeSending yeniden başlatıldıktan sonra yeniden tetikleniyor.
Kilitlenme raporuna ek dosyalar ekleme
Kilitlenme raporuna ikili ve metin ekleri ekleyebilirsiniz. SDK, bunları App Center portalında görebilmeniz için çökme ile birlikte gönderir. Önceki uygulama başlatmalarından depolanan kilitlenme gönderilmeden hemen önce aşağıdaki geri arama çağrılır. Kilitlenme gerçekleştiğinde çağrılmayacak. Ek dosyasının, minidump dosyaları için ayrılmış bir ad olduğundan adlandırılmadığındanminidump.dmp emin olun. İşte bir kilitlenmeye metin ve resim eklemenin nasıl yapılacağına dair bir örnek:
import Crashes, { ErrorAttachmentLog } from 'appcenter-crashes';
Crashes.setListener({
getErrorAttachments(report) {
const textAttachment = ErrorAttachmentLog.attachmentWithText('Hello text attachment!', 'hello.txt');
const binaryAttachment = ErrorAttachmentLog.attachmentWithBinary(`${imageAsBase64string}`, 'logo.png', 'image/png');
return [textAttachment, binaryAttachment];
}
// Other callbacks must also be defined at the same time if used.
// Default values are used if a method with return parameter isn't defined.
});
fileName parametresi isteğe bağlıdır (olabilirnull) ve yalnızca App Center portalında kullanılır. Portaldaki belirli bir çökme olayından ekleri görebilir ve indirebilirsiniz. Bir dosya adı belirttiyseniz, bu indirilecek dosya adı olur, aksi takdirde dosya adı sizin için oluşturulur.
ES2017 async/await işlevleriyle çalışacak şekilde geri çağrıyı ayarlamak için, bunun yerine tamamlanmış bir Promise döndürebilirsiniz. Aşağıdaki örnek, zaman uyumsuz bir şekilde bir çökmeye metin ve görüntü ekler:
import Crashes, { ErrorAttachmentLog } from 'appcenter-crashes';
Crashes.setListener({
getErrorAttachments(report) {
return (async () => {
const textContent = await readTextFileAsync(); // use your async function to read text file
const binaryContent = await readBinaryFileAsync(); // use your async function to read binary file
const textAttachment = ErrorAttachmentLog.attachmentWithText(textContent, 'hello.txt');
const binaryAttachment = ErrorAttachmentLog.attachmentWithBinary(binaryContent, 'logo.png', 'image/png');
return [textAttachment, binaryAttachment];
})();
}
// Other callbacks must also be defined at the same time if used.
// Default values are used if a method with return parameter isn't defined.
});
Uyarı
Bu özelliği kullanmak için uygulamanızı Çökme hizmetine uygun olarak düzgün bir şekilde yapılandırmanız gerekir.
Bu özellik JavaScript'te kilitlenmeleri işlemeye bağlıdır.
Uyarı
Boyut sınırı şu anda Android'de 1,4 MB ve iOS'ta 7 MB'tır. Daha büyük bir ek göndermeye çalışmak bir hatayı tetikler.
İşlenen Hatalar
App Center ayrıca yöntem aracılığıyla trackError işlenen özel durumları kullanarak hataları izlemenize de olanak tanır. Uygulama isteğe bağlı olarak, daha fazla bağlam sağlamak için işlenen bir hata raporuna özellikler veya/ve ekler ekleyebilir.
try {
// Throw error.
} catch (error) {
// Prepare properties.
const properties = { 'Category' : 'Music', 'Wifi' : 'On' };
// Prepare attachments.
const textAttachment = ErrorAttachmentLog.attachmentWithText('Hello text attachment!', 'hello.txt');
const attachments = [textAttachment];
// Create an exception model from error.
const exceptionModel1 = ExceptionModel.createFromError(error);
// ..or generate with your own error data.
const exceptionModel2 = ExceptionModel.createFromTypeAndMessage("type", "message", "stacktrace");
// Track error with custom data.
Crashes.trackError(exceptionModel1, properties, attachments);
Crashes.trackError(exceptionModel1, properties, nil);
Crashes.trackError(exceptionModel2, nil, attachments);
Crashes.trackError(exceptionModel2, nil, nil);
}
Kesme çubuğu
App Center, React Native uygulamalarında Android NDK'den kesme çubuğu kilitlenmelerini destekler.
Yukarıdaki normal kurulum adımlarını izleyin ve geçersiz kılmanızda MainActivity.javaOnCreate minidump yapılandırmasını ekleyin ve Kesme Çubuğu yapılandırmanızı ayarlayan yerel kodunuza çağrı yapın.
Örnek:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Crashes.getMinidumpDirectory().thenAccept(new AppCenterConsumer<String>() {
@Override
public void accept(String path) {
// Path is null when Crashes is disabled.
if (path != null) {
// links to NDK
setupBreakpadListener(path);
}
}
});
}
Çalışma zamanında App Center Çökmelerini etkinleştirme veya devre dışı bırakma
Çalışma zamanında App Center Crashes özelliğini etkinleştirebilir ve devre dışı bırakabilirsiniz. Devre dışı bırakırsanız SDK, uygulama için kilitlenme bildirimi yapmaz.
await Crashes.setEnabled(false);
App Center Kilitlenmelerini yeniden etkinleştirmek için, aynı API'yi kullanın, ancak true parametresi olarak geçirin.
await Crashes.setEnabled(true);
Durum, uygulama başlatmaları arasında cihazın depolama alanında kalıcı olur.
App Center Çökme Raporlarının etkinleştirilip etkinleştirilmediğini kontrol edin
App Center Kilitlenmelerinin etkinleştirilip etkinleştirilmediğini de de de kontrol edebilirsiniz:
const enabled = await Crashes.isEnabled();