Condividi tramite


Nozioni di base sulle estensioni dell'app message in Xamarin.iOS

Questo articolo illustra come includere un'estensione dell'app messaggio in una soluzione Xamarin.iOS che si integra con l'app Messaggi e presenta nuove funzionalità all'utente.

Novità di iOS 10, un'estensione dell'app message si integra con l'app Messaggi e presenta nuove funzionalità all'utente. L'estensione può inviare testo, adesivi, file multimediali e messaggi interattivi.

Informazioni sulle estensioni dell'app messaggio

Come indicato in precedenza, un'estensione dell'app Message si integra con l'app Messaggi e presenta nuove funzionalità all'utente. L'estensione può inviare testo, adesivi, file multimediali e messaggi interattivi. Sono disponibili due tipi di estensione dell'app messaggio:

  • Pacchetti di adesivi: contiene una raccolta di adesivi che l'utente può aggiungere a un messaggio. I pacchetti adesivi possono essere creati senza scrivere codice.
  • app iMessage : può presentare un'interfaccia utente personalizzata all'interno dell'app Messaggi per la selezione di adesivi, l'immissione di testo, inclusi i file multimediali (con conversioni di tipi facoltative) e la creazione, la modifica e l'invio di messaggi di interazione.

Le estensioni delle app per i messaggi offrono tre tipi di contenuto principali:

  • Messaggi interattivi: tipo di contenuto del messaggio personalizzato generato da un'app, quando l'utente tocca il messaggio, l'app verrà avviata in primo piano.
  • Adesivi: immagini generate dall'app che possono essere incluse nei messaggi inviati tra gli utenti.
  • Altro contenuto supportato: l'app può fornire contenuti come foto, video, testo o collegamenti a qualsiasi altro tipo di contenuto sempre supportato dall'app Messaggi.

Novità di iOS 10, l'app Message include ora app dedicate e predefinite. Tutte le app che includono le estensioni delle app messaggio verranno visualizzate e alzate di livello in questo store. Il nuovo pannello dell'app Messaggi visualizzerà tutte le app scaricate dall'App Store messaggi per fornire accesso rapido agli utenti.

Novità anche in iOS 10, Apple ha aggiunto Attribuzione app inline che consente all'utente di individuare facilmente un'app. Ad esempio, se un utente invia contenuto a un'altra da un'app che il 2° utente non ha installato (ad esempio, un adesivo), il nome dell'app di invio viene elencato sotto il contenuto nella cronologia dei messaggi. Se l'utente tocca il nome dell'app, viene aperto l'App Store messaggi e l'app selezionata nello Store.

Le estensioni delle app messaggio sono simili alle app iOS esistenti che lo sviluppatore ha familiarità con la creazione e avranno accesso a tutti i framework e le funzionalità standard di un'app iOS standard. Ad esempio:

  • Hanno accesso all'acquisto in-app.
  • Hanno accesso ad Apple Pay.
  • Hanno accesso all'hardware del dispositivo, ad esempio il Fotocamera.

Le estensioni delle app per i messaggi sono supportate solo in iOS 10, ma il contenuto inviato da queste estensioni è visualizzabile nei dispositivi watchOS e macOS. La nuova pagina Recenti aggiunta a watchOS 3 visualizzerà gli adesivi recenti inviati dal telefono, inclusi quelli di Message Apps Extensions, e consentire all'utente di inviare tali adesivi dall'orologio.

Informazioni su Messages Framework

Novità di iOS 10, il framework Messaggi fornisce l'interfaccia tra l'estensione App messaggi e l'app Messaggio nel dispositivo iOS dell'utente. Quando l'utente avvia un'app dall'interno dell'app Messaggi, questo framework consente di individuare l'app e fornisce i dati e il contesto necessari per definire l'interfaccia utente.

Dopo l'avvio dell'app, l'utente interagisce con esso per creare nuovo contenuto da condividere tramite un messaggio. L'app usa quindi il framework Messaggi per trasferire il contenuto appena creato all'app Messaggi per l'elaborazione.

Il framework Messaggi e le estensioni delle app per i messaggi si basano sulle tecnologie preesistenti per le estensioni dell'app iOS. Per altre informazioni sulle estensioni dell'app, vedere la Guida alla programmazione delle estensioni per le app di Apple.

A differenza di altri punti di estensione forniti da Apple in tutto il sistema, lo sviluppatore non deve fornire un'app host per le estensioni delle app per i messaggi perché l'app messaggio stessa funge da contenitore. Tuttavia, lo sviluppatore ha la possibilità di includere l'estensione app messaggio all'interno di un'app iOS nuova o esistente e di spedirla insieme al bundle.

Se le estensioni delle app per i messaggi sono incluse nel bundle di un'app iOS, l'icona dell'app verrà visualizzata sia nella schermata iniziale del dispositivo che nel pannello dell'app Messaggi dall'app Messaggi. Se non è incluso in un bundle dell'app, l'estensione App messaggio verrà visualizzata solo nel pannello dell'app messaggio.

Anche se le estensioni delle app messaggio non sono incluse in un bundle dell'app host, lo sviluppatore dovrà fornire un'icona dell'app nel bundle dell'estensione app messaggi, in quanto questa è l'icona che verrà visualizzata in altre parti del sistema, ad esempio il pannello dell'app messaggio o Impostazioni, per l'estensione.

Informazioni sugli adesivi

Apple ha progettato adesivi come un nuovo modo per consentire agli utenti di iMessage di comunicare consentendo l'invio di adesivi inline come qualsiasi altro contenuto di messaggio o possono essere collegati alle bolle di messaggio precedenti all'interno della conversazione.

Che cosa sono gli adesivi?

  • Sono immagini fornite dall'estensione App messaggi.
  • Possono essere animate o immagini statiche.
  • Forniscono un nuovo modo per condividere il contenuto dell'immagine dall'interno di un'app.

Esistono due modi per creare adesivi:

  1. È possibile creare estensioni per le app per i messaggi di Sticker Pack dall'interno di Xcode senza includere codice. Tutto ciò che è necessario è costituito dagli asset per gli adesivi e le icone dell'app.
  2. Creando un'estensione standard di App per messaggi che fornisce adesivi dal codice tramite il framework Messages.

Creazione di pacchetti adesivi

I pacchetti adesivi vengono creati da un modello speciale all'interno di Xcode e forniscono semplicemente un set statico di asset di immagine che possono essere usati come adesivi. Come indicato in precedenza, non richiedono codice, lo sviluppatore trascina semplicemente i file di immagine nella cartella Sticker Pack all'interno del Catalogo di asset adesivi.

Affinché un'immagine sia inclusa in un pacchetto adesivo, deve soddisfare i requisiti seguenti:

  • Le immagini devono essere in formato PNG, APNG, GIF o JPEG. Apple suggerisce di usare solo i formati PNG e APNG quando si forniscono asset adesivi.
  • Gli adesivi animati supportano solo i formati APNG e GIF.
  • Le immagini adesive devono fornire uno sfondo trasparente perché possono essere posizionate su bolle di messaggio nella conversazione dall'utente.
  • I singoli file di immagine devono essere inferiori a 500 kb.
  • Le immagini non possono essere inferiori a 100x100 punti o superiori a 206 x 206 punti.

Importante

Le immagini adesive devono essere sempre fornite alla @3x risoluzione nell'intervallo da 300 x 300 a 618 x 618 pixel. Il sistema genererà automaticamente le @2x versioni e @1x in fase di esecuzione in base alle esigenze.

Apple suggerisce di testare gli asset dell'immagine adesiva su diversi sfondi colorati (come bianco, nero, rosso, giallo e multicolore) e sopra le foto, per assicurarsi che abbiano l'aspetto migliore in tutte le situazioni possibili.

I pacchetti adesivi possono fornire adesivi in una delle tre dimensioni disponibili:

  • Piccolo - 100 x 100 punti.
  • Medio - 136 x 136 punti. Questa è la dimensione predefinita.
  • Grande - 206 x 206 punti.

Usa Controllo attributi di Xcode per impostare le dimensioni per l'intero pacchetto adesivo e fornire solo asset di immagine che corrispondono alle dimensioni richieste, per ottenere i migliori risultati nel Visualizzatore adesivi all'interno dell'app Messaggi.

Per altre informazioni, vedere Informazioni di riferimento sui messaggi di Apple.

Creazione di un'esperienza di adesivo personalizzata

Se l'app richiede maggiore controllo o flessibilità rispetto a quanto offerto da un pacchetto adesivo, può includere un'estensione dell'app messaggio e fornire gli adesivi tramite il framework Messaggi per un'esperienza di adesivo personalizzata.

Quali sono i vantaggi della creazione di un'esperienza di adesivo personalizzata?

  1. Consente all'app di personalizzare la modalità di visualizzazione degli adesivi agli utenti dell'app. Ad esempio, per presentare adesivi in un formato diverso dal layout della griglia standard o su uno sfondo colorato diverso.
  2. Consente la creazione dinamica degli adesivi dal codice anziché essere inclusi come asset di immagine statici.
  3. Consente di scaricare dinamicamente gli asset di immagini adesivi dal server Web dello sviluppatore senza dover rilasciare una nuova versione nell'App Store.
  4. Consente l'accesso alla fotocamera del dispositivo per creare adesivi in tempo reale.
  5. Consente acquisti in-app in modo che l'utente possa acquistare più adesivi dall'interno dell'app.

Per creare un'esperienza di adesivo personalizzata, seguire questa procedura:

  1. Avviare Visual Studio per Mac.

  2. Aprire la soluzione per aggiungere un'estensione dell'app messaggio a.

  3. Selezionare iOS>Extensions iMessage Extensions (Estensioni> iMessage) e fare clic sul pulsante Avanti:

    Selezionare l'estensione iMessage

  4. Immettere un nome di estensione e fare clic sul pulsante Avanti :

    Immettere un nome di estensione

  5. Fare clic sul pulsante Crea per compilare l'estensione:

    Fare clic sul pulsante Crea

Per impostazione predefinita, il MessagesViewController.cs file verrà aggiunto alla soluzione. Si tratta del punto di ingresso principale nell'estensione e eredita dalla MSMessageAppViewController classe .

Il framework Messages fornisce classi per la presentazione degli adesivi disponibili all'utente:

  • MSStickerBrowserViewController - Controlla la visualizzazione in cui verranno presentati gli adesivi. È inoltre conforme all'interfaccia IMSStickerBrowserViewDataSource per restituire il Conteggio adesivi e l'adesivo per un determinato indice del browser.
  • MSStickerBrowserView - Questa è la visualizzazione in cui verranno visualizzati gli adesivi disponibili.
  • MSStickerSize - Decide le singole dimensioni delle celle per la griglia degli adesivi presentati nella visualizzazione del browser.

Creazione di un visualizzatore di adesivi personalizzato

Lo sviluppatore può personalizzare ulteriormente l'esperienza di adesivo per l'utente fornendo un visualizzatore adesivo personalizzato (MSMessageAppBrowserViewController) nell'estensione dell'app messaggio. Il Visualizzatore adesivo personalizzato cambia il modo in cui gli adesivi vengono presentati all'utente quando selezionano un adesivo da includere nel flusso di messaggi.

Effettua le operazioni seguenti:

  1. Nel riquadro della soluzione fare clic con il pulsante destro del mouse sul nome del progetto dell'estensione e scegliere Aggiungi>nuovo file...>iOS | Apple Watch>Interface Controller.

  2. Immettere StickerBrowserViewController per Nome e fare clic sul pulsante Nuovo :

    Immettere StickerBrowserViewController come Nome

  3. Apre il file StickerBrowserViewController.cs per la modifica.

Fare in modo che l'aspetto StickerBrowserViewController.cs sia simile al seguente:

using System;
using System.Collections.Generic;
using UIKit;
using Messages;
using Foundation;

namespace MonkeyStickers
{
    public partial class StickerBrowserViewController : MSStickerBrowserViewController
    {
        #region Computed Properties
        public List<MSSticker> Stickers { get; set; } = new List<MSSticker> ();
        #endregion

        #region Constructors
        public StickerBrowserViewController (MSStickerSize stickerSize) : base (stickerSize)
        {
        }
        #endregion

        #region Private Methods
        private void CreateSticker (string assetName, string localizedDescription)
        {

            // Get path to asset
            var path = NSBundle.MainBundle.PathForResource (assetName, "png");
            if (path == null) {
                Console.WriteLine ("Couldn't create sticker {0}.", assetName);
                return;
            }

            // Build new sticker
            var stickerURL = new NSUrl (path);
            NSError error = null;
            var sticker = new MSSticker (stickerURL, localizedDescription, out error);
            if (error == null) {
                // Add to collection
                Stickers.Add (sticker);
            } else {
                // Report error
                Console.WriteLine ("Error, couldn't create sticker {0}: {1}", assetName, error);
            }
        }

        private void LoadStickers ()
        {

            // Load sticker assets from disk
            CreateSticker ("canada", "Canada Sticker");
            CreateSticker ("clouds", "Clouds Sticker");
            ...
            CreateSticker ("tree", "Tree Sticker");
        }
        #endregion

        #region Public Methods
        public void ChangeBackgroundColor (UIColor color)
        {
            StickerBrowserView.BackgroundColor = color;

        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Initialize
            LoadStickers ();
        }

        public override nint GetNumberOfStickers (MSStickerBrowserView stickerBrowserView)
        {
            return Stickers.Count;
        }

        public override MSSticker GetSticker (MSStickerBrowserView stickerBrowserView, nint index)
        {
            return Stickers[(int)index];
        }
        #endregion
    }
}

Esaminare in dettaglio il codice precedente. Crea spazio di archiviazione per gli adesivi forniti dall'estensione:

public List<MSSticker> Stickers { get; set; } = new List<MSSticker> ();

Esegue l'override di due metodi della MSStickerBrowserViewController classe per fornire dati per il browser da questo archivio dati:

public override nint GetNumberOfStickers (MSStickerBrowserView stickerBrowserView)
{
    return Stickers.Count;
}

public override MSSticker GetSticker (MSStickerBrowserView stickerBrowserView, nint index)
{
    return Stickers[(int)index];
}

Il CreateSticker metodo ottiene il percorso di un asset immagine dal bundle dell'estensione e lo usa per creare una nuova istanza di un MSSticker oggetto da questo asset, che aggiunge alla raccolta:

private void CreateSticker (string assetName, string localizedDescription)
{

    // Get path to asset
    var path = NSBundle.MainBundle.PathForResource (assetName, "png");
    if (path == null) {
        Console.WriteLine ("Couldn't create sticker {0}.", assetName);
        return;
    }

    // Build new sticker
    var stickerURL = new NSUrl (path);
    NSError error = null;
    var sticker = new MSSticker (stickerURL, localizedDescription, out error);
    if (error == null) {
        // Add to collection
        Stickers.Add (sticker);
    } else {
        // Report error
        Console.WriteLine ("Error, couldn't create sticker {0}: {1}", assetName, error);
    }
}

Il LoadSticker metodo viene chiamato da ViewDidLoad per creare un adesivo dall'asset immagine denominato (incluso nel bundle dell'app) e aggiungerlo alla raccolta di adesivi.

Per implementare il browser adesivo personalizzato, modificare il MessagesViewController.cs file e renderlo simile al seguente:

using System;
using UIKit;
using Messages;

namespace MonkeyStickers
{
    public partial class MessagesViewController : MSMessagesAppViewController
    {
        #region Computed Properties
        public StickerBrowserViewController BrowserViewController { get; set;}
        #endregion

        #region Constructors
        protected ViewController (IntPtr handle) : base (handle)
        {
            // Note: this .ctor should not contain any initialization logic.
        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Create new browser and configure it
            BrowserViewController = new StickerBrowserViewController (MSStickerSize.Regular);
            BrowserViewController.View.Frame = View.Frame;
            BrowserViewController.ChangeBackgroundColor (UIColor.Gray);

            // Add to view
            AddChildViewController (BrowserViewController);
            BrowserViewController.DidMoveToParentViewController (this);
            View.AddSubview (BrowserViewController.View);
        }
        #endregion
    }
}

Esaminando in dettaglio questo codice, viene creata una risorsa di archiviazione per il browser personalizzato:

public StickerBrowserViewController BrowserViewController { get; set;}

E nel metodo crea un'istanza ViewDidLoad e configura un nuovo browser:

// Create new browser and configure it
BrowserViewController = new StickerBrowserViewController (MSStickerSize.Regular);
BrowserViewController.View.Frame = View.Frame;
BrowserViewController.ChangeBackgroundColor (UIColor.Gray);

Aggiunge quindi il browser alla visualizzazione per visualizzarlo:

// Add to view
AddChildViewController (BrowserViewController);
BrowserViewController.DidMoveToParentViewController (this);
View.AddSubview (BrowserViewController.View);

Ulteriore personalizzazione dell'adesivo

È possibile personalizzare ulteriormente l'adesivo includendo solo due classi nell'estensione dell'app messaggio:

  • MSStickerView
  • MSSticker

Usando i metodi precedenti, l'estensione può supportare la selezione di adesivi che non si basa sul metodo Standard Sticker Browser. Inoltre, lo schermo adesivo può essere spostato tra due diverse modalità di visualizzazione:

  • Compatta : questa è la modalità predefinita in cui la visualizzazione adesivi occupa il 25% inferiore della visualizzazione messaggi.
  • Espanso: la visualizzazione adesivo riempie l'intera visualizzazione messaggi.

Questa visualizzazione adesivo può essere spostata tra queste modalità a livello di codice o manualmente dall'utente.

Esaminare l'esempio seguente di gestione del passaggio tra le due diverse modalità di visualizzazione. Per ogni stato saranno necessari due controller di visualizzazione diversi. Gestisce StickerBrowserViewController la visualizzazione Compact e ha un aspetto simile al seguente:

using System;
using System.Collections.Generic;
using UIKit;
using Messages;
using Foundation;

namespace MessageExtension
{
    public partial class StickerBrowserViewController : MSStickerBrowserViewController
    {
        #region Computed Properties
        public MessagesViewController MessagesAppViewController { get; set; }
        public List<MSSticker> Stickers { get; set; } = new List<MSSticker> ();
        #endregion

        #region Constructors
        public StickerBrowserViewController (MessagesViewController messagesAppViewController, MSStickerSize stickerSize) : base (stickerSize)
        {
            // Initialize
            this.MessagesAppViewController = messagesAppViewController;
        }
        #endregion

        #region Private Methods
        private void CreateSticker (string assetName, string localizedDescription)
        {

            // Get path to asset
            var path = NSBundle.MainBundle.PathForResource (assetName, "png");
            if (path == null) {
                Console.WriteLine ("Couldn't create sticker {0}.", assetName);
                return;
            }

            // Build new sticker
            var stickerURL = new NSUrl (path);
            NSError error = null;
            var sticker = new MSSticker (stickerURL, localizedDescription, out error);
            if (error == null) {
                // Add to collection
                Stickers.Add (sticker);
            } else {
                // Report error
                Console.WriteLine ("Error, couldn't create sticker {0}: {1}", assetName, error);
            }
        }

        private void LoadStickers ()
        {

            // Load sticker assets from disk
            CreateSticker ("add", "Add New Sticker");
            CreateSticker ("canada", "Canada Sticker");
            CreateSticker ("clouds", "Clouds Sticker");
            CreateSticker ("tree", "Tree Sticker");
        }
        #endregion

        #region Public Methods
        public void ChangeBackgroundColor (UIColor color)
        {
            StickerBrowserView.BackgroundColor = color;

        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Initialize
            LoadStickers ();

        }

        public override nint GetNumberOfStickers (MSStickerBrowserView stickerBrowserView)
        {
            return Stickers.Count;
        }

        public override MSSticker GetSticker (MSStickerBrowserView stickerBrowserView, nint index)
        {
            // Wanting to add a new sticker?
            if (index == 0) {
                // Yes, ask controller to present add sticker interface
                MessagesAppViewController.AddNewSticker ();
                return null;
            } else {
                // No, return existing sticker
                return Stickers [(int)index];
            }
        }
        #endregion
    }
}

Gestirà AddStickerViewController la visualizzazione adesiva espansa e avrà un aspetto simile al seguente:

using System;
using Foundation;
using UIKit;
using Messages;

namespace MessageExtension
{
    public class AddStickerViewController : UIViewController
    {
        #region Computed Properties
        public MessagesViewController MessagesAppViewController { get; set;}
        public MSSticker NewSticker { get; set;}
        #endregion

        #region Constructors
        public AddStickerViewController (MessagesViewController messagesAppViewController)
        {
            // Initialize
            this.MessagesAppViewController = messagesAppViewController;
        }
        #endregion

        #region Override Method
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Build interface to create new sticker
            var cancelButton = new UIButton (UIButtonType.RoundedRect);
            cancelButton.TouchDown += (sender, e) => {
                // Cancel add new sticker
                MessagesAppViewController.CancelAddNewSticker ();
            };
            View.AddSubview (cancelButton);

            var doneButton = new UIButton (UIButtonType.RoundedRect);
            doneButton.TouchDown += (sender, e) => {
                // Add new sticker to collection
                MessagesAppViewController.AddStickerToCollection (NewSticker);
            };
            View.AddSubview (doneButton);

            ...
        }
        #endregion
    }
}

MessageViewController Implementa questi controller di visualizzazione per guidare lo stato richiesto:

using System;
using UIKit;
using Messages;

namespace MessageExtension
{
    public partial class MessagesViewController : MSMessagesAppViewController
    {
        #region Computed Properties
        public bool IsAddingSticker { get; set;}
        public StickerBrowserViewController BrowserViewController { get; set; }
        public AddStickerViewController AddStickerController { get; set;}
        #endregion

        #region Constructors
        protected MessagesViewController (IntPtr handle) : base (handle)
        {
            // Note: this .ctor should not contain any initialization logic.
        }
        #endregion

        #region Public Methods
        public void PresentStickerBrowser ()
        {
            // Is the Add sticker view being displayed?
            if (IsAddingSticker) {
                // Yes, remove it from view
                AddStickerController.RemoveFromParentViewController ();
                AddStickerController.View.RemoveFromSuperview ();
            }

            // Add to view
            AddChildViewController (BrowserViewController);
            BrowserViewController.DidMoveToParentViewController (this);
            View.AddSubview (BrowserViewController.View);

            // Save mode
            IsAddingSticker = false;
        }

        public void PresentAddSticker ()
        {
            // Is the sticker browser being displayed?
            if (!IsAddingSticker) {
                // Yes, remove it from view
                BrowserViewController.RemoveFromParentViewController ();
                BrowserViewController.View.RemoveFromSuperview ();
            }

            // Add to view
            AddChildViewController (AddStickerController);
            AddStickerController.DidMoveToParentViewController (this);
            View.AddSubview (AddStickerController.View);

            // Save mode
            IsAddingSticker = true;
        }

        public void AddNewSticker ()
        {
            // Switch to expanded view mode
            Request (MSMessagesAppPresentationStyle.Expanded);
        }

        public void CancelAddNewSticker ()
        {
            // Switch to compact view mode
            Request (MSMessagesAppPresentationStyle.Compact);
        }

        public void AddStickerToCollection (MSSticker sticker)
        {
            // Add sticker to collection
            BrowserViewController.Stickers.Add (sticker);

            // Switch to compact view mode
            Request (MSMessagesAppPresentationStyle.Compact);
        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Create new browser and configure it
            BrowserViewController = new StickerBrowserViewController (this, MSStickerSize.Regular);
            BrowserViewController.View.Frame = View.Frame;
            BrowserViewController.ChangeBackgroundColor (UIColor.Gray);

            // Create new Add controller and configure it as well
            AddStickerController = new AddStickerViewController (this);
            AddStickerController.View.Frame = View.Frame;

            // Initially present the sticker browser
            PresentStickerBrowser ();
        }

        public override void DidTransition (MSMessagesAppPresentationStyle presentationStyle)
        {
            base.DidTransition (presentationStyle);

            // Take action based on style
            switch (presentationStyle) {
            case MSMessagesAppPresentationStyle.Compact:
                PresentStickerBrowser ();
                break;
            case MSMessagesAppPresentationStyle.Expanded:
                PresentAddSticker ();
                break;
            }
        }
        #endregion
    }
}

Quando l'utente richiede di aggiungere un nuovo adesivo alla raccolta disponibile, viene reso visibile un nuovo AddStickerViewController controller e la visualizzazione adesiva entra nella visualizzazione Espansa :

// Switch to expanded view mode
Request (MSMessagesAppPresentationStyle.Expanded);

Quando l'utente sceglie un adesivo da aggiungere, viene aggiunto alla raccolta disponibile e viene richiesta la visualizzazione Compact :

public void AddStickerToCollection (MSSticker sticker)
{
    // Add sticker to collection
    BrowserViewController.Stickers.Add (sticker);

    // Switch to compact view mode
    Request (MSMessagesAppPresentationStyle.Compact);
}

Il DidTransition metodo viene sottoposto a override per gestire il passaggio tra le due modalità:

public override void DidTransition (MSMessagesAppPresentationStyle presentationStyle)
{
    base.DidTransition (presentationStyle);

    // Take action based on style
    switch (presentationStyle) {
    case MSMessagesAppPresentationStyle.Compact:
        PresentStickerBrowser ();
        break;
    case MSMessagesAppPresentationStyle.Expanded:
        PresentAddSticker ();
        break;
    }
}

Riepilogo

Questo articolo ha illustrato come includere un'estensione dell'app messaggio in una soluzione Xamarin.iOS che si integra con l'app Messaggi e presenta nuove funzionalità all'utente. È stato trattato usando l'estensione per inviare testo, adesivi, file multimediali e messaggi interattivi.