Udostępnij za pośrednictwem


Awarie centrum aplikacji (Cordova)

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Uwaga

Wsparcie dla aplikacji Cordova zakończyło się w kwietniu 2022 r. Więcej informacji można znaleźć w blogu Centrum aplikacji.

Awarie centrum aplikacji automatycznie wygenerują dziennik awarii za każdym razem, gdy aplikacja ulegnie awarii. Dziennik jest najpierw zapisywany w magazynie urządzenia, a gdy użytkownik ponownie uruchomi aplikację, raport o awarii zostanie wysłany do Centrum aplikacji. Zbieranie awarii działa zarówno w przypadku aplikacji beta, jak i na żywo, tj. przesłanych do App Store. Dzienniki awarii zawierają cenne informacje ułatwiające naprawienie awarii.

Jeśli zestaw SDK nie został jeszcze skonfigurowany w aplikacji, postępuj zgodnie z sekcją Wprowadzenie.

Generowanie awarii testowej

Usługa App Center Crash udostępnia interfejs API umożliwiający wygenerowanie awarii testowej w celu łatwego testowania zestawu SDK. Ten interfejs API może być używany tylko w aplikacjach testowych/beta i nie wykonuje żadnych czynności w aplikacjach produkcyjnych.

AppCenter.Crashes.generateTestCrash();

Uwaga

Aby ta awaria została wysłana do centrum aplikacji App Center, należy skompilować aplikację Cordova w trybie wydania.

Uzyskaj więcej informacji o poprzedniej awarii

Usługa App Center Crash ma dwa interfejsy API, które zapewniają więcej informacji na wypadek awarii aplikacji.

Czy w poprzedniej sesji aplikacja otrzymała ostrzeżenie o niskiej ilości pamięci?

W dowolnym momencie po uruchomieniu zestawu SDK możesz sprawdzić, czy aplikacja otrzymała ostrzeżenie o pamięci w poprzedniej sesji:

var success = function(hadLowMemoryWarning) {
    console.log(`there was ${hadLowMemoryWarning ? "a" : "no"} memory warning`);
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.hasReceivedMemoryWarningInLastSession(success, error);

Uwaga

W niektórych przypadkach niska ilość pamięci urządzenia może nie wyzwalać śledzonych zdarzeń.

Czy aplikacja uległa awarii w poprzedniej sesji?

W dowolnym momencie po uruchomieniu zestawu SDK możesz sprawdzić, czy aplikacja uległa awarii w poprzednim uruchomieniu:

var success = function(didCrash) {
    console.log("there was " + (didCrash ? "a" : "no") + " crash");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.hasCrashedInLastSession(success, error);

Jest to przydatne w przypadku, gdy chcesz dostosować zachowanie lub interfejs użytkownika aplikacji po wystąpieniu awarii. Niektórzy deweloperzy mogą chcieć pokazać coś, aby przeprosić swoich użytkowników lub skontaktować się po wystąpieniu awarii.

Szczegóły dotyczące ostatniej awarii

Jeśli aplikacja uległa awarii wcześniej, możesz uzyskać szczegółowe informacje o ostatniej awarii.

var success = function(crashReport) {
    //do something with crash report
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.lastSessionCrashReport(success, error);

Dostosowywanie użycia awarii centrum aplikacji

Usługa App Center Crash zapewnia deweloperom możliwość wykonywania dodatkowych akcji przed i podczas wysyłania dzienników awarii do Centrum aplikacji.

Przetwarzanie awarii w języku JavaScript

Zestaw SDK można skonfigurować do automatycznego wysyłania raportów awarii lub przetwarzania awarii w języku JavaScript, zmieniając wartość preferencji APPCENTER_CRASHES_ALWAYS_SEND w config.xml. Aby przetworzyć awarie w języku JavaScript, ustaw dla niego wartość false.

<preference name="APPCENTER_CRASHES_ALWAYS_SEND" value="false" />

Następnie możesz użyć AppCenter.Crashes.process(processFunction, errorCallback) metody w celu dostosowania procesji awarii.

Czy awaria powinna zostać przetworzona?

Przekaż false do elementu , sendCallback jeśli chcesz zdecydować, czy należy przetworzyć konkretną awarię, czy nie. Na przykład może wystąpić awaria na poziomie systemu, którą chcesz zignorować i że nie chcesz wysyłać do centrum aplikacji.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    sendCallback(false); //crash won't be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

W przeciwnym razie przekaż true do sendCallback funkcji, a awaria zostanie wysłana.

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    sendCallback(true); //crash will be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

Uwaga

Aby użyć tej funkcji, należy ustawić APPCENTER_CRASHES_ALWAYS_SEND wartość preferencji w config.xml na falsewartość .

Ta funkcja jest zatem zależna od awarii przetwarzania w języku JavaScript.

Dodawanie załączników do raportu o awarii

Możesz dodać załączniki binarne i tekstowe do raportu o awarii. Zestaw SDK wyśle je wraz z awarią, aby można było je zobaczyć w portalu centrum aplikacji. Następujące wywołanie zwrotne zostanie wywołane bezpośrednio przed wysłaniem przechowywanej awarii z poprzednich uruchomień aplikacji, ale nie w czasie awarii. Upewnij się, że plik załącznika nie ma nazwy, minidump.dmp ponieważ nazwa jest zarezerwowana dla plików minidump. Oto przykład dołączania tekstu i obrazu do awarii:

var errorCallback = function(error) {
    console.error(error);
};

var processFunction = function(attachments, sendCallback) {
    for (var i = 0; i < attachments.length; i++) {
        attachments[i].addTextAttachment('Hello text attachment!', 'hello.txt');
        var imageAsBase64string = '...';
        attachments[i].addBinaryAttachment(imageAsBase64string, 'logo.png', 'image/png');
    }
    sendCallback(true); //crash will be sent
};

AppCenter.Crashes.process(processFunction, errorCallback);

Uwaga

Aby użyć tej funkcji, należy ustawić APPCENTER_CRASHES_ALWAYS_SEND wartość preferencji w config.xml na falsewartość .

Ta funkcja jest zatem zależna od awarii przetwarzania w języku JavaScript.

Uwaga

Limit rozmiaru wynosi obecnie 1,4 MB w systemie Android i 7 MB w systemie iOS. Próba wysłania większego załącznika spowoduje wyzwolenie błędu.

Włączanie lub wyłączanie awarii usługi App Center w czasie wykonywania

Możesz włączyć i wyłączyć awarie usługi App Center w czasie wykonywania. Jeśli ją wyłączysz, zestaw SDK nie będzie wykonywać żadnych raportów o awarii dla aplikacji.

var success = function() {
    console.log("crashes disabled");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.setEnabled(false, success, error);

Aby ponownie włączyć awarie usługi App Center, użyj tego samego interfejsu API, ale przekaż true go jako parametr.

var success = function() {
    console.log("crashes enabled");
}

var error = function(error) {
    console.error(error);
}

AppCenter.Crashes.setEnabled(true, success, error);

Stan jest utrwalany w magazynie urządzenia w ramach uruchamiania aplikacji.

Sprawdzanie, czy w centrum aplikacji jest włączona awaria

Możesz również sprawdzić, czy usługa App Center Ulega awarii jest włączona:

var success = function(result) {
    console.log("crashes " + (result) ? "enabled" : "disabled");
}

var error = function(error) {
    console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);