Incluyendo datos personalizados en volcados de emergencia de iOS

Hola Stack Overflow!

Una pregunta simple para usted: ¿es posible incrustar datos de error personalizados en volcados de emergencia de iOS generados automáticamente que obtengo de mis usuarios cuando mi aplicación se bloqueó en su dispositivo?

Por ejemplo: mi base de datos SQlite no funcionará por algún motivo (digamos, el archivo de la base de datos está dañado) .. No puedo recuperarme de este error, así que tiro una excepción e incrusto en la excepción el mensaje de error sqlite detallado. El problema es que el volcado de la aplicación no contendrá el mensaje de excepción, por lo que no es fácil saber bajo qué condiciones se bloqueó la aplicación.

¿Alguien sabe una forma de poner las cosas en el informe de volcado? ¿O tiene alguna otra forma recomendada de informar fallas de producción al desarrollador?

Gracias !

No, no puedes agregar tus propios datos a los informes de fallos. Tampoco es posible acceder a informes de fallos generados por iOS automáticamente debido a la zona de pruebas.

Entonces mi sugerencia es la siguiente:

  1. Para registrar sus propios datos, use Cocoalumberjack . Es mucho más rápido que NSLog u otros marcos de trabajo de registro y tiene la opción de registrar sus mensajes en un archivo. Ahora, cuando se produce una excepción, o cuando lo desee, inicie sesión en un archivo. Pero si su aplicación se bloquea justo en un punto donde agrega algo en un archivo de registro, lo más probable es que falte, ya que la aplicación se bloqueó en el mismo momento.

    Por lo tanto, es bastante imposible capturar de forma segura la statement SQL exacta. Pero el informe de fallos debería proporcionarle información suficiente para comprender lo que está sucediendo, además de lo que ha iniciado antes. Por ejemplo, podría registrar la cadena de búsqueda utilizada en el modo SQL antes de que se ejecute el SQL.

    En general, intente no registrar demasiado.

  2. Para capturar el informe de fallos, no debe hacer otra cosa que una solución basada en el marco de código abierto PLCrashReporter , que puede detectar lockings de forma segura , ¡incluso cuando su aplicación ya se encuentra en la tienda de aplicaciones! No se recomienda capturar excepciones, consulte este artículo para ver por qué.

    iTunes Connect también le permite ver algunos informes de fallos, pero demora hasta 2 semanas para ver algunos, pero de lejos no todos, por ejemplo, lo señalan los desarrolladores de Camera + . Entonces es mejor que uses tu propia solución.

    PLCrashReporter le enviará informes de fallos formateados Apple estándar, listos para la simbolización, para que sepa dónde ocurre el locking en su código, incluidos los números de línea.

    Algunas soluciones basadas en PLCrashReporter son:

    • QuincyKit : cliente de código abierto + servidor php, agrupación básica de fallos , la simbolización se puede automatizar desde su mac (yo soy el desarrollador de esto)
    • HockeyApp : servicio pagado, utiliza el cliente QuincyKit, agrupación avanzada de locking, simbolización completamente realizada en el servidor (soy uno de los desarrolladores de esto)
    • Bugsense : servicio gratuito, se anuncia la simbología como función premium
    • AppBlade : servicio pagado, simbolización desconocida
    • Crashlytics : beta privada, características desconocidas, su solución parece estar basada en PLCrashReporter
  3. Las soluciones propuestas permiten enviar los datos automáticamente en la próxima puesta en marcha o al preguntar al usuario si acepta enviarlos.

Disclaimer-as-per-the-faq: soy un desarrollador de AppBlade.

AppBlade le permite enviar parámetros personalizados junto con informes de fallos simbolizados a partir de diciembre de 2012.

¡Echale un vistazo! http://blog.appblade.com/news/2012/12/appblade-sdk-update-sessions-and-queues/