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.
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.
Gli arresti anomali di App Center hanno due API che forniscono altre informazioni in caso di arresto anomalo dell'app.
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.
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.
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);
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.
È 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.
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.
È 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.
È 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.
È 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);