Arresti anomali di App Center (Cordova)

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

Nota

Il supporto per le app Cordova è terminato nell'aprile 2022. Per altre informazioni, vedere il blog di App Center.

Gli arresti anomali di App Center genereranno automaticamente un log di arresto anomalo ogni volta che l'app si arresta in modo anomalo. Il log viene prima scritto nella risorsa di archiviazione del dispositivo e quando l'utente avvia nuovamente l'app, il report di arresto anomalo verrà inviato ad App Center. La raccolta di arresti anomali funziona sia per le app beta che per quelle attive, ovvero quelle inviate al App Store. I log di arresto anomalo contengono informazioni utili per risolvere l'arresto anomalo del sistema.

Se non è ancora stato configurato l'SDK nell'applicazione, seguire la sezione Introduzione.

Generare un arresto anomalo del test

Gli arresti anomali di App Center offrono un'API per generare un arresto anomalo del test per semplificare il test dell'SDK. Questa API può essere usata solo nelle app di test/beta e non esegue alcuna operazione nelle app di produzione.

AppCenter.Crashes.generateTestCrash();

Nota

L'app Cordova deve essere compilata in modalità di rilascio per l'invio di questo arresto anomalo ad App Center.

Ottenere altre informazioni su un arresto anomalo precedente

Gli arresti anomali di App Center hanno due API che forniscono altre informazioni in caso di arresto anomalo dell'app.

L'app ha ricevuto un avviso di memoria insufficiente nella sessione precedente?

In qualsiasi momento dopo l'avvio dell'SDK, è possibile verificare se l'app ha ricevuto un avviso di memoria nella sessione precedente:

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);

Nota

In alcuni casi, l'esecuzione di memoria insufficiente di un dispositivo potrebbe non attivare eventi rilevabili.

L'arresto anomalo dell'app nella sessione precedente?

In qualsiasi momento dopo l'avvio dell'SDK, è possibile verificare se l'app si è arrestata in modo anomalo nell'avvio precedente:

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

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

AppCenter.Crashes.hasCrashedInLastSession(success, error);

Questo è utile nel caso in cui vuoi modificare il comportamento o l'interfaccia utente della tua app dopo che si è verificato un arresto anomalo. Alcuni sviluppatori potrebbero voler mostrare qualcosa per scusarsi con gli utenti o per entrare in contatto dopo che si è verificato un arresto anomalo.

Dettagli sull'ultimo arresto anomalo

Se l'app si è arrestata in modo anomalo in precedenza, è possibile ottenere dettagli sull'ultimo arresto anomalo.

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

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

AppCenter.Crashes.lastSessionCrashReport(success, error);

Personalizzare l'utilizzo degli arresti anomali di App Center

Gli arresti anomali di App Center offrono agli sviluppatori la possibilità di eseguire azioni aggiuntive prima e quando si inviano log di arresto anomalo ad App Center.

Arresto anomalo dell'elaborazione in JavaScript

È possibile configurare l'SDK per inviare automaticamente i report di arresto anomalo del sistema o elaborare arresti anomali in JavaScript modificando il valore delle preferenze APPCENTER_CRASHES_ALWAYS_SEND in config.xml. Per elaborare gli arresti anomali in JavaScript impostarlo su false.

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

È quindi possibile usare il AppCenter.Crashes.process(processFunction, errorCallback) metodo per personalizzare la processione degli arresti anomali.

L'arresto anomalo deve essere elaborato?

Passare false a sendCallback se si desidera decidere se un determinato arresto anomalo deve essere elaborato o meno. Ad esempio, potrebbe verificarsi un arresto anomalo a livello di sistema che si vuole ignorare e che non si vuole inviare ad App Center.

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

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

AppCenter.Crashes.process(processFunction, errorCallback);

In caso contrario, passare true alla sendCallback funzione e l'arresto anomalo verrà inviato.

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

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

AppCenter.Crashes.process(processFunction, errorCallback);

Nota

Per usare questa funzionalità, è necessario impostare APPCENTER_CRASHES_ALWAYS_SEND il valore di preferenza in config.xml su false.

Questa funzionalità dipende quindi dagli arresti anomali dell'elaborazione in JavaScript.

Aggiungere allegati a un report di arresto anomalo

È possibile aggiungere allegati binari e di testo a un report di arresto anomalo del sistema. L'SDK li invierà insieme all'arresto anomalo in modo da poterli visualizzare nel portale di App Center. Il callback seguente verrà richiamato immediatamente prima di inviare l'arresto anomalo archiviato dall'avvio dell'applicazione precedente, ma non al momento dell'arresto anomalo. Assicurarsi che il file allegato non sia denominato minidump.dmp in quanto tale nome è riservato per i file minidump. Ecco un esempio di come allegare un testo e un'immagine a un arresto anomalo:

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);

Nota

Per usare tale funzionalità, è necessario impostare APPCENTER_CRASHES_ALWAYS_SEND il valore di preferenza in config.xml su false.

Questa funzionalità dipende quindi dagli arresti anomali dell'elaborazione in JavaScript.

Nota

Il limite di dimensioni è attualmente 1,4 MB in Android e 7 MB in iOS. Se si tenta di inviare un allegato più grande, verrà generato un errore.

Abilitare o disabilitare arresti anomali di App Center in fase di esecuzione

È possibile abilitare e disabilitare arresti anomali di App Center in fase di esecuzione. Se la si disabilita, l'SDK non eseguirà alcuna segnalazione di arresto anomalo per l'app.

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

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

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

Per abilitare di nuovo gli arresti anomali di App Center, usare la stessa API ma passare true come parametro.

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

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

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

Lo stato viene salvato in modo permanente nella risorsa di archiviazione del dispositivo tra i lanci dell'applicazione.

Controllare se Gli arresti anomali di App Center sono abilitati

È anche possibile controllare se Gli arresti anomali di App Center sono abilitati:

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

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