Compatibilidad con las extensiones de Xamarin.Mac
En la compatibilidad con Xamarin.Mac 2.10, se agregó para varios puntos de extensión de macOS:
- Finder
- Compartir
- Hoy
Limitaciones y problemas conocidos
A continuación, se muestran las limitaciones y los problemas conocidos que pueden producirse al desarrollar extensiones en Xamarin.Mac:
- Actualmente, no hay compatibilidad con la depuración en Visual Studio para Mac. Toda la depuración deberá realizarse a través de NSLog y la consola. Consulte la sección de sugerencias a continuación para obtener más información.
- Las extensiones deben estar contenidas en una aplicación host, que cuando se ejecuta una vez, se registra en el sistema. A continuación, deben habilitarse en la sección Extensión de Preferencias del sistema.
- Algunos bloqueos de extensión pueden desestabilizar la aplicación host y provocar un comportamiento extraño. En concreto, Finder y la sección Hoydel Centro de notificaciones pueden "atascarse" y dejar de responder. Esto también se ha experimentado en proyectos de extensión en Xcode y actualmente no parece estar relacionado con Xamarin.Mac. A menudo, esto se puede ver en el registro del sistema (a través de la consola, consulte Sugerencias para obtener detalles) imprimiendo mensajes de error repetidos. Reiniciar macOS parece corregirlo.
Sugerencias
Las siguientes sugerencias pueden resultar útiles al trabajar con extensiones en Xamarin.Mac:
Como, en este momento, Xamarin.Mac no admite extensiones de depuración, la experiencia de depuración dependerá principalmente de la ejecución y de instrucciones similares a
printf
. Sin embargo, las extensiones se ejecutan en un proceso de espacio aislado, por lo tantoConsole.WriteLine
no actuará como en otras aplicaciones de Xamarin.Mac. InvocarNSLog
directamente generará mensajes de depuración en el registro del sistema.Las excepciones no detectadas bloquearán el proceso de extensión, proporcionando solo una pequeña cantidad de información útil en el registro del sistema. Puede resultar útil encapsular código problemático en un bloque
try/catch
(excepción) que se registre medianteNSLog
antes de volver a generarse.Se puede acceder al Registro del sistema desde la aplicación Consola en Aplicaciones>Utilidades:
Como se indicó anteriormente, la ejecución de la aplicación host de extensiones hará que se registre en el sistema. Eliminar la agrupación de aplicaciones con la opción de anular el registro.
Si se registran versiones "aisladas" de las extensiones de una aplicación, use el siguiente comando para localizarlas (para que se puedan eliminar):
plugin kit -mv
Tutorial
Dado que el desarrollador creará y trabajará con extensiones de Xamarin.Mac de la misma manera que las extensiones de Xamarin.iOS, consulte nuestra documentación Introducción a extensiones para obtener más detalles.
Resumen
En este artículo, se ha dado un vistazo rápido a cómo trabajar extensiones en una aplicación de Xamarin.Mac versión 2.10 (y posterior).