Bloqueos de App Center (Cordova)
Importante
Visual Studio App Center está programado para retirarse el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.
Obtenga más información sobre las escalas de tiempo y las alternativas de soporte técnico.
Nota
El soporte técnico para aplicaciones cordova finalizó en abril de 2022. Obtenga más información en el blog de App Center.
Los bloqueos de App Center generarán automáticamente un registro de bloqueos cada vez que se bloquee la aplicación. El registro se escribe primero en el almacenamiento del dispositivo y, cuando el usuario vuelve a iniciar la aplicación, el informe de bloqueo se enviará a App Center. La recopilación de bloqueos funciona tanto para aplicaciones beta como para aplicaciones activas, es decir, las enviadas a la App Store. Los registros de bloqueo contienen información valiosa para ayudarle a corregir el bloqueo.
Siga la sección Introducción si aún no ha configurado el SDK en la aplicación.
App Center Crashes proporciona una API para generar un bloqueo de prueba para facilitar las pruebas del SDK. Esta API solo se puede usar en aplicaciones de prueba o beta y no hará nada en las aplicaciones de producción.
AppCenter.Crashes.generateTestCrash();
Nota
La aplicación Cordova debe compilarse en modo de versión para que este bloqueo se envíe a App Center.
App Center Crashes tiene dos API que proporcionan más información en caso de que la aplicación se bloquee.
En cualquier momento después de iniciar el SDK, puede comprobar si la aplicación recibió una advertencia de memoria en la sesión anterior:
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
En algunos casos, es posible que la ejecución de memoria baja de un dispositivo no desencadene eventos rastreables.
En cualquier momento después de iniciar el SDK, puede comprobar si la aplicación se bloqueó en el inicio anterior:
var success = function(didCrash) {
console.log("there was " + (didCrash ? "a" : "no") + " crash");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.hasCrashedInLastSession(success, error);
Esto resulta útil en caso de que quieras ajustar el comportamiento o la interfaz de usuario de la aplicación después de que se haya producido un bloqueo. Es posible que algunos desarrolladores quieran mostrar algo para disculparse a sus usuarios o para ponerse en contacto después de que se haya producido un bloqueo.
Si la aplicación se bloqueó anteriormente, puedes obtener detalles sobre el último bloqueo.
var success = function(crashReport) {
//do something with crash report
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.lastSessionCrashReport(success, error);
Los bloqueos de App Center proporcionan capacidades para que los desarrolladores realicen acciones adicionales antes y al enviar registros de bloqueo a App Center.
Puede configurar el SDK para enviar informes de bloqueo automáticamente o procesar bloqueos en JavaScript cambiando el valor de preferencia APPCENTER_CRASHES_ALWAYS_SEND
en config.xml. Para procesar bloqueos en JavaScript, establézcalo false
en .
<preference name="APPCENTER_CRASHES_ALWAYS_SEND" value="false" />
A continuación, puede usar AppCenter.Crashes.process(processFunction, errorCallback)
el método para personalizar la procesión de bloqueos.
Pase false
al sendCallback
si desea decidir si es necesario procesar o no un bloqueo determinado. Por ejemplo, podría haber un bloqueo de nivel de sistema que le gustaría omitir y que no desea enviar a 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);
De lo contrario, pase true
a la sendCallback
función y se enviará el bloqueo.
var errorCallback = function(error) {
console.error(error);
};
var processFunction = function(attachments, sendCallback) {
sendCallback(true); //crash will be sent
};
AppCenter.Crashes.process(processFunction, errorCallback);
Nota
Para usar esta característica, debe establecer APPCENTER_CRASHES_ALWAYS_SEND
el valor de preferencia en config.xml en false
.
Por lo tanto, esta característica depende de los bloqueos de procesamiento en JavaScript.
Puede agregar datos adjuntos binarios y de texto a un informe de bloqueo. El SDK los enviará junto con el bloqueo para que pueda verlos en el portal de App Center. La siguiente devolución de llamada se invocará justo antes de enviar el bloqueo almacenado desde inicios de aplicación anteriores, pero no en el momento del bloqueo. Asegúrese de que el archivo adjunto no tiene nombre minidump.dmp
, ya que ese nombre está reservado para los archivos minivolcados. Este es un ejemplo de cómo adjuntar un texto y una imagen a un bloqueo:
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
Para usar esa característica, debe establecer APPCENTER_CRASHES_ALWAYS_SEND
el valor de preferencia en config.xml en false
.
Por lo tanto, esta característica depende de los bloqueos de procesamiento en JavaScript.
Nota
El límite de tamaño es actualmente de 1,4 MB en Android y 7 MB en iOS. Si se intenta enviar un archivo adjunto mayor, se producirá un error.
Puede habilitar y deshabilitar bloqueos de App Center en tiempo de ejecución. Si la deshabilita, el SDK no hará ningún informe de bloqueos para la aplicación.
var success = function() {
console.log("crashes disabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.setEnabled(false, success, error);
Para habilitar los bloqueos de App Center de nuevo, use la misma API, pero pase true
como parámetro.
var success = function() {
console.log("crashes enabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.setEnabled(true, success, error);
El estado se conserva en el almacenamiento del dispositivo en los inicios de la aplicación.
También puede comprobar si los bloqueos de App Center están habilitados:
var success = function(result) {
console.log("crashes " + (result) ? "enabled" : "disabled");
}
var error = function(error) {
console.error(error);
}
AppCenter.Crashes.isEnabled(success, error);