Supporto delle estensioni Xamarin.Mac

In Xamarin.Mac 2.10 è stato aggiunto il supporto per più punti di estensione macOS:

  • Finder
  • Condividi
  • Oggi

Limitazioni e problemi noti

Di seguito sono riportate le limitazioni e i problemi noti che possono verificarsi durante lo sviluppo di estensioni in Xamarin.Mac:

  • Attualmente non è disponibile alcun supporto per il debug in Visual Studio per Mac. Tutto il debug dovrà essere eseguito tramite NSLog e la console. Per informazioni dettagliate, vedere la sezione dei suggerimenti di seguito.
  • Le estensioni devono essere contenute in un'applicazione host, che quando viene eseguita una sola volta con registrazione nel sistema. Devono quindi essere abilitati nella sezione Estensione di Preferenze di sistema.
  • Alcuni arresti anomali dell'estensione possono destabilizzare l'applicazione host e causare comportamenti anomali. In particolare, Finder e la sezione Oggi del Centro notifiche possono diventare "inceppati" e diventare non rispondenti. Questo problema è stato riscontrato anche nei progetti di estensione in Xcode e attualmente non è correlato a Xamarin.Mac. Spesso questo può essere visualizzato nel log di sistema (tramite console, vedere Suggerimenti per informazioni dettagliate) stampare messaggi di errore ripetuti. Il riavvio di macOS sembra risolvere questo problema.

Suggerimenti

I suggerimenti seguenti possono essere utili quando si lavora con le estensioni in Xamarin.Mac:

  • Poiché Xamarin.Mac attualmente non supporta le estensioni di debug, l'esperienza di debug dipende principalmente dall'esecuzione e printf dalle istruzioni like. Tuttavia, le estensioni vengono eseguite in un processo sandbox, quindi Console.WriteLine non funzioneranno come in altre applicazioni Xamarin.Mac. La chiamata NSLog diretta restituirà i messaggi di debug nel log di sistema.

  • Eventuali eccezioni non rilevate arresteranno il processo di estensione, fornendo solo una piccola quantità di informazioni utili nel log di sistema. Il wrapping di codice problematico in un try/catch blocco (eccezione) prima NSLogdella generazione di nuovo può essere utile.

  • È possibile accedere al log di sistema dall'app Console in Utilità applicazioni>:

    The system log

  • Come indicato in precedenza, l'esecuzione dell'applicazione host dell'estensione lo registrerà nel sistema. Eliminazione del bundle dell'applicazione con la annullamento della registrazione.

  • Se vengono registrate versioni "strade" delle estensioni di un'app, usare il comando seguente per individuarle (in modo che possano essere eliminate): plugin kit -mv

Procedura dettagliata e app di esempio

Poiché lo sviluppatore creerà e lavorerà con le estensioni Xamarin.Mac nello stesso modo delle estensioni Xamarin.iOS, vedere la documentazione introduzione alle estensioni per altri dettagli.

Un esempio di progetto Xamarin.Mac contenente piccoli esempi funzionanti di ogni tipo di estensione è disponibile qui.

Riepilogo

Questo articolo ha esaminato rapidamente l'uso delle estensioni in un'app Xamarin.Mac versione 2.10 (e successive).