Condividi tramite


Informazioni sui concetti di SiriKit

Questo articolo illustra i concetti chiave che saranno necessari per l'uso di SiriKit in un'app Xamarin.iOS.

Una novità di iOS 10, SiriKit consente a un'app Xamarin.iOS di fornire servizi accessibili all'utente usando Siri e l'app Mappe in un dispositivo iOS. Questa funzionalità viene fornita in una o più estensioni dell'app usando i nuovi framework di finalità e finalità dell'interfaccia utente.

SiriKit consente a un'app iOS di fornire servizi accessibili all'utente usando Siri e l'app Mappe in un dispositivo iOS usando le estensioni dell'app e i nuovi framework dell'interfaccia utente intenti e finalità.

Siri funziona con il concetto di domini, gruppi di azioni di conoscenza per le attività correlate. Ogni interazione che l'app ha con Siri deve rientrare in uno dei domini del servizio noti come indicato di seguito:

  • Audio o videochiamate.
  • Prenotare un giro.
  • Gestione degli allenamenti.
  • Messaggistica.
  • Ricerca di foto.
  • Invio o ricezione di pagamenti.

Quando l'utente effettua una richiesta di Siri che coinvolge uno dei servizi dell'estensione dell'app, SiriKit invia l'estensione un oggetto Intent che descrive la richiesta dell'utente insieme ai dati di supporto. L'estensione dell'app genera quindi l'oggetto Response appropriato per la finalità specificata, che descrive in dettaglio come l'estensione può gestire la richiesta.

Estensioni dell'interfaccia utente finalità e finalità

Sia Siri che l'app Mappe interagiscono con i servizi dell'app tramite due diversi tipi di estensioni dell'app:

  • Estensione finalità: fornisce Siri e Mappe con il contenuto dell'app ed esegue le attività necessarie per soddisfare le finalità supportate.
  • Estensione interfaccia utente finalità: fornisce un'interfaccia utente personalizzata che verrà visualizzata per il contenuto dell'app all'interno di Siri o Mappe.

L'app deve fornire un'estensione intents per supportare SiriKit ed è responsabile della fornitura di informazioni che Siri e Mappe possono presentare all'utente e per la gestione delle finalità.

La creazione di un'estensione dell'interfaccia utente Intents è facoltativa perché Siri gestisce in genere tutte le interazioni utente e dispone di un'interfaccia utente predefinita standard per la presentazione di informazioni in ognuno dei domini supportati. Fornendo un'estensione dell'interfaccia utente intenti, l'app può usare il framework dell'interfaccia utente intento per presentare un'interfaccia utente completa e personalizzata con informazioni aggiuntive e personalizzate dell'app.

Siri e il ruolo dell'app Mappe

Le richieste vocali dell'utente vengono elaborate in linguaggio e analizzate semanticamente da Siri, che trasforma tali richieste in intenti interattivi che possono essere gestite dalle estensioni delle finalità.

Mappe usa le estensioni finalità dell'app per visualizzare le informazioni nell'interfaccia mappa in risposta alle azioni dell'utente. Ad esempio richiedere ristoranti nelle vicinanze o ottenere le recensioni del ristorante dell'app.

Siri e Mappe gestire tutte le interazioni dell'utente e visualizzare i risultati usando l'interfaccia di sistema standard. Il ruolo delle estensioni dell'app è principalmente quello di fornire i dati visualizzati. Facoltativamente, l'app può fornire un'estensione dell'interfaccia utente intents e presentare un'interfaccia utente personalizzata per migliorare l'interfaccia di sistema predefinita.

Interazione con Siri tramite SiriKit

Questa sezione presenta una panoramica del modo in cui SiriKit consente all'utente di interagire con l'app usando Siri. Ai fini di questo esempio, useremo l'app MonkeyChat fittizia:

Icona MonkeyChat

MonkeyChat mantiene il proprio libro contatti degli amici dell'utente, ognuno associato a un nome di schermata (ad esempio Bobo) e consente all'utente di inviare chat di testo a ogni amico in base al nome dello schermo.

Esistono molti modi in cui l'utente potrebbe avviare un'interazione con l'app, perché persone diverse potrebbero effettuare la stessa richiesta in molti moduli diversi.

Ad esempio, se l'utente vuole inviare un messaggio al proprio amico Bobo, potrebbe avere la conversazione seguente con Siri:

Utente: Hey Siri, invia un messaggio MonkeyChat.
Siri: A chi?
Utente: Bobo.
Siri: Cosa vuoi dire a Bobo?
Utente: invia altre banane.

Un'altra persona potrebbe effettuare la stessa richiesta con una conversazione diversa:

Utente: inviare un messaggio a Bobo su MonkeyChat.
Siri: Cosa vuoi dire a Bobo?
Utente: invia più banane.

E un altro utente potrebbe effettuare una richiesta ancora più breve:

Utente: MonkeyChat Bobo si prega di inviare più banane.
Siri: Ok, inviare un messaggio per inviare altre banane a Bobo su Monkeychat.

O anche effettuare la stessa richiesta in una lingua diversa:

Utente: MonkeyChat Bobo s'il vous plaît envoyer plus de bananas.
Siri: Oui, envoi message s'il vous plaît envoyer plus de bananas à Bobo sur Monkeychat.

Un altro utente potrebbe essere molto dettagliato nella conversazione:

Utente: Hey Siri, puoi farmi un favore e lanciare l'app MonkeyChat per inviare un sms con il messaggio ti prego di inviare altre banane.
Siri: A chi?
Utente: il mio migliore amico Bobo.

Inoltre, esistono molti modi in cui Siri potrebbe rispondere a una richiesta, alcuni in base al modo in cui è stata effettuata la richiesta:

  • Tenendo premuto il pulsante Home - Siri fornirà più risposte visive con feedback verbale limitato.
  • Con "Hey Siri" - Siri sarà più verbale e fornirà un minor numero di risposte visive.

Siri è anche ottimizzato per soddisfare le esigenze di accessibilità dell'utente e interagirà e risponderà in base a tali esigenze.

Indipendentemente dal modo in cui una richiesta viene effettuata o come Siri risponde alla richiesta, Siri gestisce la conversazione con l'utente e l'app (tramite le relative estensioni) fornisce la funzionalità.

Quando l'utente effettua una richiesta verbale di Siri, questi sono i passaggi che Siri seguirà:

I passaggi che Siri seguirà

  1. Prima di tutto, Siri acquisisce l'audio del riconoscimento vocale dell'utente e lo converte in testo.
  2. Successivamente, il testo viene convertito in una finalità, una rappresentazione strutturata della richiesta dell'utente.
  3. In base alla finalità, Siri eseguirà l'azione per eseguire la richiesta dell'utente.
  4. Infine, Siri presenterà le risposte (visive e verbali ) all'utente in base all'azione eseguita.

Esistono tre modi principali in cui l'app può partecipare alla conversazione dell'utente con Siri:

I tre modi principali in cui l'app può partecipare alla conversazione degli utenti con Siri

  1. Vocabolario : questo è il modo in cui l'app indica a Siri le parole che deve sapere per interagire con esso.
  2. Logica dell'app: si tratta delle azioni e delle risposte che l'app eseguirà in base alle finalità indicate.
  3. Interfaccia utente: interfaccia utente facoltativa e personalizzata in cui l'app può fornire le risposte.

Esempio

Date le informazioni precedenti, esaminare come la conversazione seguente interagirà con l'app MonkeyChat:

Utente: Hey Siri, invia un messaggio a Bobo su MonkeyChat.
Siri: Cosa vuoi dire a Bobo?
Utente: invia più banane.

Il primo ruolo che l'app assume nella conversazione consiste nell'aiutare Siri a comprendere la voce dell'utente:

Aiutare Siri a comprendere il parlato degli utenti

Siri non ha il nome "Bobo" nel database, ma l'app lo fa e ha condiviso queste informazioni con Siri tramite il suo vocabolario. L'app aiuta anche Siri a riconoscere che Bobo è un destinatario, perché li ha specificati a Siri come contatto.

Siri sa che più è necessario per inviare un messaggio rispetto a un solo destinatario, quindi verificherà rapidamente con l'estensione dell'app per verificare se un messaggio richiede contenuto. Poiché MonkeyChat fa, Siri risponderà all'utente con la domanda: "Cosa vuoi dire a Bobo?"

Nell'esempio precedente, l'utente ha risposto : "Invia altre banane", che Siri aggrega in una finalità strutturata:

Siri aggrega la risposta dell'utente in una finalità strutturata

La finalità strutturata conterrà le informazioni seguenti:

  • Dominio: Messaggi
  • Finalità: sendMessage
  • Destinatario: Bobo
  • Contenuto: inviare altre banane

Ogni dominio ha come set di azioni che possono essere eseguite all'interno di esse e in base al dominio e all'azione, zero a molti parametri potrebbero essere inclusi nella finalità inviata all'app.

La finalità viene quindi inviata all'estensione dell'app per l'elaborazione. In seguito all'elaborazione della finalità, l'app genererà un IntentResponse che verrà incluso nella finalità e includerà i parametri che descrivono le operazioni dell'app con la finalità.

Ogni IntentResponse includerà anche un codice di risposta che indica a Siri se l'app è stata in grado di completare o meno la richiesta. Alcuni domini hanno codici di risposta di errore molto specifici che possono essere inviati.

Infine, intentResponse includerà ( NSUserActivity come quelli usati per supportare hand off). Verrà NSUserActivity usato per avviare l'app se la risposta richiede che lascino l'ambiente Siri e immettano l'app per completarla.

Siri creerà automaticamente un'app appropriata NSUserActivity per avviare l'app e il ritiro in cui l'utente si è interrotto nell'ambiente Siri. Tuttavia, l'app può fornire le proprie NSUserActivity informazioni personalizzate, se necessario.

Dopo che l'app ha elaborato la finalità e restituito una risposta a Siri, presenta i risultati all'utente (sia verbalmente che visivamente):

I risultati presentati all'utente sia verbalmente che visivamente

Siri include diverse interfacce utente di risposta predefinite per ognuno dei domini disponibili per l'app. Tuttavia, poiché MonkeyChat ha fornito un'estensione facoltativa dell'interfaccia utente finalità, viene usata per presentare i risultati della conversazione all'utente nell'esempio precedente.

Ciclo di vita delle finalità

Esistono tre attività principali che l'estensione dell'app dovrà eseguire quando si gestiscono le finalità:

Ciclo di vita delle finalità

  1. L'app deve risolvere ogni parametro in un evento. Di conseguenza, l'app chiamerà Resolve più volte (una volta per ogni parametro) e talvolta più volte sullo stesso parametro fino a quando l'app e l'utente non accettano ciò che viene richiesto.
  2. L'app deve confermare che può gestire la finalità richiesta e comunicare a Siri il risultato previsto.
  3. Infine, l'app deve gestire la finalità ed eseguire i passaggi per ottenere il risultato richiesto.

Fase di risoluzione

La fase Risolvi aiuta Siri a comprendere i valori forniti dall'utente e garantisce che ciò che l'utente intende effettivamente è ciò che accadrà quando la finalità viene elaborata dall'app.

Questa fase offre anche un'opportunità per l'app di influenzare il comportamento di Siri durante la conversazione con l'utente. A tale scopo, l'app fornirà una risposta di risoluzione. Esistono diverse risposte predefinite ai diversi tipi di dati che Siri riconosce.

La risposta di risoluzione più comune dell'app sarà Operazione riuscita, vale a dire che l'app corrisponde al dato specifico da un parametro (ad esempio il nome dello schermo utente) a una parte di informazioni che conosce.

In alcuni casi l'app deve verificare che una determinata richiesta corrisponda alla parte corretta di informazioni che conosce. In questi casi, invierà una risposta ConfirmationRequired per porre una domanda sì o no all'utente, ad esempio "Invia messaggio a Bobo the Great?"

Potrebbero esserci altri casi in cui l'app richiederà all'utente di scegliere da un breve elenco di opzioni. In questo caso, l'app fornirà una risposta di ambiguità con un elenco di due o dieci opzioni tra cui scegliere l'utente, ad esempio:

Who do you want to message?

* Bobo the Great
* Bobo Jr.
* Little Bobo

Siri gestirà l'utente che effettua la selezione, verbalmente o interagendo con l'interfaccia utente di Siri e il risultato verrà inviato all'app.

In altri casi, potrebbero non esserci informazioni sufficienti per l'app per risolvere il parametro o potrebbero esserci troppe corrispondenze da risolvere usando la disambiguazione (ad esempio 80 utenti con Bobo nel nome). In questi casi, l'app invierà una risposta NeedsMoreDetails e Siri chiederà all'utente di essere più specifico.

Se l'utente non ha fornito un valore necessario per elaborare la finalità, può inviare una risposta NeedsValue per chiedere a Siri di richiedere all'utente il valore.

Se l'app non supporta un valore assegnato dall'utente per un parametro specifico, può inviare la risposta UnsupportedWithReason per fornire un motivo per cui il valore non è supportato. Siri richiederà quindi all'utente un valore completamente nuovo e in base al motivo per cui è necessario.

Infine, usare la risposta NotRequired per indicare a Siri che l'app non richiede un valore per un determinato parametro. Se l'utente ne fornisce comunque uno, verrà semplicemente ignorato da Siri.

Fase di conferma

La fase Confirm ha due scopi:

  • Per indicare a Siri il risultato previsto della gestione di una finalità in modo che Siri possa indicare all'utente cosa succederà.
  • Fornisce un'opportunità per verificare gli stati richiesti che l'app potrebbe dover completare la richiesta presentata dall'utente, ad esempio avere abbastanza denaro nella banca per effettuare il pagamento richiesto.

L'app fornirà una risposta finalità dal passaggio di conferma, che deve essere popolata con tutte le informazioni disponibili per consentire a Siri di comunicare in modo efficace con l'utente.

In base al tipo di dominio e azione, Siri potrebbe richiedere conferma all'utente, ad esempio prima di inviare un pagamento o prenotare un viaggio.

Fase handle

La fase di gestione è la parte più importante dell'uso di una finalità perché è il punto in cui l'app soddisfa la richiesta dell'utente eseguendo l'attività a cui è stato chiesto di eseguire.

Proprio come nella fase Di conferma, l'app deve fornire tutte le informazioni sul risultato possibile, in modo che Siri possa correlarlo all'utente. A volte queste informazioni verranno presentate visivamente o altre volte Siri lo parlerà semplicemente all'utente.

Potrebbero verificarsi momenti in cui l'app potrebbe richiedere tempo aggiuntivo per elaborare una determinata richiesta, ad esempio ritardi delle chiamate di rete o se una persona attiva deve soddisfare la richiesta (ad esempio il completamento e la spedizione di un ordine o la guida di un'auto nella posizione dell'utente). Quando Siri è in attesa di una risposta dall'app, visualizzerà un'interfaccia utente in attesa all'utente che informa che l'app sta elaborando la richiesta.

Idealmente, l'app deve fornire una risposta a Siri entro due o tre secondi al massimo. Se l'app sa che una determinata risposta richiederà più tempo per l'elaborazione, deve inviare un codice di risposta InProgress a Siri. Siri informerà quindi l'utente che l'app sta elaborando la richiesta in background e continuerà a farlo anche se lasciano l'ambiente Siri.

Aggiunta di SiriKit all'app

Con SiriKit in iOS 10, Apple ha creato due nuovi punti di estensione:

  • Estensione finalità: fornisce Siri con il contenuto dell'app ed esegue le attività necessarie per soddisfare le finalità supportate.
  • Estensione interfaccia utente finalità: fornisce un'interfaccia utente personalizzata che verrà visualizzata per il contenuto delle app all'interno di Siri.

È anche disponibile un'API per fornire parole e frasi a Siri per facilitare il riconoscimento sotto forma di:

  • Vocabolario dell'app: parole e frasi comuni a ogni utente dell'app.
  • Vocabolario utente: parole e frasi univoche per un determinato utente dell'app.

Estensione finalità

L'estensione intents è responsabile della gestione delle interazioni principali tra l'app e Siri come indicato di seguito:

Estensione finalità

L'estensione finalità può supportare una o più finalità, ma spetta allo sviluppatore decidere come implementare SiriKit nell'app. Lo sviluppatore può anche aggiungere un'estensione di finalità separata per ogni finalità che deve essere gestita. Detto questo, Apple richiede che lo sviluppatore limiti il numero di estensioni finalità in modo che Siri non abbia più processi aperti per l'app, che richiedono più memoria e tempo da gestire.

Lo sviluppatore deve anche tenere presente che l'estensione della finalità verrà eseguita in background mentre Siri è attivo. Ciò consente a Siri di continuare attivamente una conversazione con l'utente mentre comunica con l'estensione per elaborare le informazioni sulla richiesta.

Considerazioni su privacy e sicurezza

Apple ha adottato grandi misure per garantire che le informazioni private dell'utente siano sicure quando si lavora con Siri e, di conseguenza, ci sono diverse interazioni che richiedono l'accesso dell'utente nel dispositivo iOS. Ad esempio, quando si richiede una corsa o si effettua un pagamento.

Inoltre, esistono comportamenti specifici che l'app potrebbe voler limitare all'utente connesso al dispositivo. Per queste situazioni, l'app può richiedere il comportamento Restrict While Locked . Questa operazione viene eseguita tramite un'impostazione nel Info.plist file.

Il framework di autenticazione locale è disponibile per l'estensione della finalità in modo che l'app possa chiedere all'utente informazioni di autenticazione aggiuntive, anche se il dispositivo è già sbloccato.

Infine, Apple Pay è disponibile per l'estensione delle finalità in modo che l'app possa completare una transazione usando Apple Pay e il foglio Apple Pay predefinito verrà visualizzato sopra l'interfaccia Siri.

Inoltre, Apple vuole assicurarsi che gli utenti sappiano quando inviano informazioni a un'app di terze parti e, di conseguenza, l'utente deve pronunciare il nome specifico dell'app (come specificato nel nome visualizzato bundle dell'app) durante l'invio di una richiesta.

Apple ha progettato Siri per eseguire conversazioni naturali e fluide con l'utente e a causa di questo, il nome bundle dell'app può essere usato in molte parti del parlato, ovunque si adatti naturalmente nella richiesta dell'utente.

Una delle cose comuni che gli utenti eseguiranno consiste nel "verbificare" il nome dell'app, in altre parole, prendendo il nome dell'app e usandolo come verbo in una richiesta. Ad esempio, "MonkeyChat Bobo quelli erano grandi banane".

Estensione dell'interfaccia utente intents

L'estensione dell'interfaccia utente Intents offre l'opportunità di portare l'interfaccia utente e la personalizzazione dell'app nell'esperienza Siri e rendere gli utenti connessi all'app. Con questa estensione, l'app può portare il marchio, nonché l'oggetto visivo e altre informazioni nella trascrizione.

Output dell'estensione dell'interfaccia utente intents di esempio

L'estensione dell'interfaccia utente intents restituirà sempre un UIViewController oggetto e l'app può aggiungere qualsiasi elemento all'interno del controller di visualizzazione, ad esempio mostrando informazioni aggiuntive che vanno oltre la risposta iniziale. L'interfaccia utente intents può anche aggiornare l'utente con lo stato di un evento a esecuzione prolungata, ad esempio quanto tempo richiederà un'auto di condivisione delle corse per raggiungere la propria posizione.

L'estensione dell'interfaccia utente Intents verrà sempre visualizzata insieme ad altri contenuti siri, ad esempio l'icona dell'app e il nome nella parte superiore dell'interfaccia utente o, in base alla finalità, i pulsanti (ad esempio Invia o Annulla) possono essere visualizzati nella parte inferiore.

Esistono alcune istanze in cui l'app può sostituire le informazioni visualizzate da Siri all'utente per impostazione predefinita, ad esempio la messaggistica o le mappe in cui l'app può sostituire l'esperienza predefinita con un'esperienza personalizzata per l'app.

Importante

Anche se è possibile aggiungere elementi interattivi, UIButtons ad esempio o UITextFields all'estensione dell'interfaccia utente finalità UIViewController, questi sono strettamente vietati perché l'interfaccia utente della finalità in non interattivo e l'utente non sarà in grado di interagire con loro.

È totalmente facoltativo per l'app fornire un'estensione dell'interfaccia utente finalità, perché Siri contiene un set predefinito di interfaccia utente per ogni tipo di finalità. Inoltre, le interfacce dell'interfaccia utente intents sono disponibili solo per determinate finalità che Apple ha ritenuto utile per l'utente.

Aggiunta del vocabolario SiriKit

La parte finale dell'implementazione di SiriKit si trova all'interno dell'app fornendo il vocabolario richiesto. Molte app hanno modi univoci per descrivere le informazioni all'utente e modi univoci in cui l'utente fornirà informazioni all'app.

Per questo motivo, Siri richiede l'assistenza dell'app per comprendere le parole e le frasi univoci per l'app. Alcune di queste frasi faranno parte dell'app in modo che tutti gli utenti sappiano e li comprendano. Altri, tuttavia, saranno univoci per un determinato utente dell'app.

Vocabolario specifico dell'app

Il vocabolario specifico dell'app definisce le parole e le frasi specifiche che saranno note a tutti gli utenti dell'app, ad esempio i tipi di veicolo o i nomi degli allenamenti. Poiché fanno parte dell'applicazione, vengono definiti in un AppIntentVocabulary.plist file come parte del bundle principale dell'app. Inoltre, queste parole e frasi devono essere localizzate.

Esistono diverse parti di un file vocabolario AppIntentVocabulary.plist :

  • Esempi di usi dell'app: forniscono un set di casi d'uso comuni per le richieste che l'utente può effettuare dell'app. Ad esempio: "Inizia un allenamento con MonkeyFit".
  • Parametri: forniscono un set di tipi di parametri non standard specifici per l'app. Ad esempio, nomi di allenamento per l'app MonkeyFit. Questi sono costituiti da:
    • Frase : consente all'app di definire termini univoci per l'app. Ad esempio: il tipo di allenamento "Bananarific" per l'app MonkeyFit.
    • Pronuncia : fornisce suggerimenti di pronuncia a Siri come semplice ortografia fonetica per una determinata frase. Ad esempio, "ba nana ri fic".
    • Esempio : fornisce un esempio di uso della frase specificata nell'app. Ad esempio, "Start a Bananarific in MonkeyFit".

Per altre informazioni, vedere Le informazioni di riferimento sul formato del file del vocabolario dell'app di Apple.

Vocabolario specifico dell'utente

Il vocabolario specifico dell'utente fornirà parole o frasi univoche per i singoli utenti dell'app. Questi verranno forniti in fase di esecuzione dall'app principale (non dalle estensioni dell'app) come set ordinato di termini ordinati in una priorità di utilizzo più significativa per gli utenti, con i termini più importanti all'inizio dell'elenco.

Esaminare l'esempio dell'app MonkeyChat presentata in precedenza. MonkeyChat mantiene un elenco di tutti i contatti dell'utente, che verrà inviato a Siri tramite il vocabolario specifico dell'utente. Mantiene inoltre un elenco dei 10 contatti più recenti che l'utente ha inviato un messaggio e ha un set di contatti Preferiti per ogni utente. Per questo esempio, i contatti preferiti devono essere all'inizio del vocabolario specifico dell'utente, seguiti dai contatti recenti, quindi dal resto dei contatti dell'utente.

I tipi di informazioni seguenti sono supportati dal vocabolario specifico dell'utente:

  • Nomi dei contatti.
  • Nomi di allenamento.
  • Nomi album fotografici.
  • Parole chiave photo.

Se l'app si basa sulla Rubrica iOS, l'app non dovrà eseguire alcuna azione, perché queste informazioni sono già disponibili per Siri. L'app deve fornire nomi di contatto solo se l'app ha un proprio database univoco di contatti.

Quando si progetta il vocabolario, specificare solo i valori necessari che gli utenti conoscono e si preoccupano. Evitare di fornire informazioni quali numeri di telefono o indirizzi di posta elettronica.

L'app deve anche aggiornare Siri tempestivamente quando cambia il vocabolario specifico dell'utente. Gli utenti sono abituati a richiedere informazioni da Siri il momento in cui è stato aggiunto al dispositivo iOS. Ad esempio, se l'utente aggiunge un nuovo contatto nell'app, inviare tali informazioni a Siri non appena l'utente lo salva.

Ancora più importante, l'app deve eliminare tempestivamente le informazioni dal vocabolario siri perché un utente potrebbe diventare sconvolto se hanno eliminato una parte di informazioni, ma Siri lo riconosceva ancora ore o giorni dopo.

Importante

L'app deve rimuovere tutto il vocabolario specifico dell'utente da Siri se l'utente sceglie di reimpostare l'app o se si disconnette.

Autorizzazioni di SiriKit

Il pezzo finale di SiriKit è incentrato sulle autorizzazioni. Proprio come l'uso di altre funzionalità di iOS (ad esempio Foto, Fotocamera o Contatti), gli utenti devono concedere all'app l'autorizzazione esplicita per comunicare con Siri.

L'app è in grado di fornire una stringa che definisce le informazioni che fornirà a Siri e fornisce un motivo per il motivo per cui l'utente deve concedere questo accesso.

Apple suggerisce che l'app deve richiedere l'autorizzazione dell'utente per usare Siri la prima volta che l'utente apre l'app dopo l'aggiornamento a iOS 10. Questo è così che gli utenti conoscono l'integrazione di Siri e possono pre-approvare l'utilizzo prima di effettuare la prima richiesta.

SiriKit e Mappe

SiriKit è parte integrante di iOS e usa il framework intents più ampio aggiunto a iOS 10. Il framework Intents è stato progettato per condividere azioni e finalità comuni e condivise con altre parti del sistema.

Il framework Intents va oltre l'integrazione di Siri e fornisce altre funzionalità, ad esempio l'integrazione dei contatti, in cui l'app può diventare l'app di telefonia o di messaggistica predefinita per contatti specifici. Le finalità offrono anche un'integrazione approfondita con CallKit per offrire agli utenti la migliore esperienza VOIP possibile.

L'app Mappe in iOS 10 ha aggiunto funzionalità come la condivisione delle corse in cui l'utente può prenotare un viaggio direttamente all'interno dell'interfaccia utente Mappe. SiriKit fornisce un punto di estensione comune con Mappe in modo che la condivisione delle corse (e altre) finalità possano essere condivise tra Siri e Mappe.

Ciò significa che se l'app ha adottato le estensioni SiriKit, otterrà gratuitamente l'integrazione Mappe.

Progettazione di un'esperienza Siri ottimale

La progettazione di un'esperienza utente ottimale quando si integra un'app in Siri è diversa dalla progettazione di un'interfaccia utente di un'app ottimale. A differenza delle situazioni normali in cui l'utente interagisce direttamente con l'app sullo schermo, quando si usa Siri ci sono molte volte quando non è visibile alcuna interfaccia visiva. Ad esempio, quando l'utente ha avviato la conversazione con "Hey Siri".

Come Siri aiuta lo sviluppatore

Quando si progettano le interazioni di un'app con Siri, l'app creerà un'interfaccia di conversazione, ovvero il contesto deriva dalla conversazione che Siri ha con l'utente per conto dell'app.

In assenza di un riferimento visivo, l'utente deve tenere traccia delle informazioni presentate nella testa. Per questo motivo Siri presenta le informazioni minime minime necessarie per ottenere l'attività che l'utente desidera eseguire.

L'interfaccia di conversazione è modellata dalle domande e dalle risposte dell'utente e da Siri durante la conversazione. È quindi importante pensare a come Siri pone domande e risponde durante la progettazione di questa interfaccia.

Si prenda l'esempio seguente dell'utente che crea un messaggio, Siri potrebbe rispondere con la domanda "Pronto per inviarlo?". L'utente può rispondere in molti modi diversi, ad esempio "Invia" o "Annulla" o anche qualcosa di completamente non correlato a questa domanda. Indipendentemente dal modo in cui si verifica la conversazione, Siri lo gestirà per l'app e invierà solo le informazioni pertinenti man mano che diventa disponibile.

Esistono diversi modi in cui un utente potrebbe avviare una conversazione con Siri:

  • Selezionando il dispositivo, premendo il pulsante Home. In questa situazione Siri presenterà più interfacce visive e risposte meno verbali.
  • Dicendo "Hey Siri" e avviando una conversazione a mani libere. In questa situazione Siri sarà meno visivo e più verbale.
  • Uso di funzionalità di accessibilità, ad esempio apparecchi acustici abilitati per Bluetooth, in cui l'interfaccia utente verrà personalizzata per un utente con esigenze speciali.
  • Uso di Car Play in cui l'utente deve mantenere l'attenzione focalizzata sulla guida mantenendo al minimo le distrazioni.

Come lo sviluppatore aiuta Siri

Quando si integra un'app con Siri, lo sviluppatore deve testare spesso questa integrazione e assicurarsi che vengano eseguite molte richieste diverse richiedendo la stessa informazione o attività nel maggior numero possibile di richieste diverse.

Poiché nessuna delle due persone pensa allo stesso modo, è fondamentale che lo sviluppatore ottenga il maggior numero possibile di beta tester diversi per ottimizzare l'integrazione di Siri. Gli utenti possono chiedere informazioni o effettuare richieste in modi in cui lo sviluppatore non è mai stato e questa ottimizzazione può aiutare a garantire che il gruppo più ampio di utenti abbia un'esperienza ottimale usando la propria app con Siri.

Testare in situazioni e ambienti diversi. Avviare le conversazioni con Siri in tutti i modi possibili per garantire che queste conversazioni rimangano fluide e naturali. Prova in posizioni in cui l'utente probabilmente usa l'app, come in una palestra affollata.

Assicurarsi che l'app fornisca tutte le informazioni necessarie a Siri per rappresentare correttamente la richiesta e il risultato dell'utente. Questo è particolarmente vero quando si usa Siri in una situazione mani libere.

Linee guida per la progettazione di Siri

Ricorda sempre che Siri sta avendo una conversazione con l'utente per conto dell'app. Lo sviluppatore vuole non essere sicuro che questa conversazione rimanga il più fluida possibile e naturale.

Come per qualsiasi conversazione importante, lo sviluppatore deve garantire quanto segue:

  • Che l'app sia preparata per la conversazione.
  • Che l'app è in ascolto esattamente di ciò che l'utente sta tentando di eseguire.
  • Che l'app pone le domande appropriate nei momenti appropriati.
  • Che l'app risponde alla richiesta con le informazioni che l'utente sta cercando.

Preparazione per la conversazione

La prima cosa da ricordare è che gli utenti dell'app non saranno esattamente come lo sviluppatore. Possono provenire da background diversi, parlare lingue diverse o avere esigenze speciali quando si lavora con l'app.

Inoltre, dal momento che lo sviluppatore ha progettato e creato l'app, ha una conoscenza profonda e intima sia dell'app che dei suoi lavori interni e funzioni che un utente tipico non avrà. Lo sviluppatore potrebbe quindi chiedere a Siri in modo diverso rispetto a un utente normale.

Questo è il motivo per cui è fondamentale avere il maggior numero di persone diverse possibile interagire con l'app tramite Siri. Gli utenti possono effettuare richieste dell'app tramite Siri che lo sviluppatore non ha mai pensato o in modi in cui lo sviluppatore non ha considerato.

Verificare che l'app sia un listener valido

Lo sviluppatore deve assicurarsi che l'app sia un buon listener e ottenga le specifiche della conversazione che soddisfano le aspettative dell'utente. Ma è anche possibile che non abbiano fornito tutte le informazioni necessarie all'app per ottenere l'attività richiesta.

Esistono diversi modi in cui l'app potrebbe gestire questa situazione:

  • Selezionare un valore predefinito valido per il valore mancante: ad esempio, un'app di condivisione delle corse potrebbe essere l'impostazione predefinita della posizione corrente dell'utente se non ha specificato la posizione da cui desiderano essere prelevati.
  • Fai un'ipotesi educata : usando informazioni specifiche raccolte dall'app sull'utente, l'app potrebbe essere in grado di indovinare e indovinare le informazioni mancanti, ad esempio compilare un numero di cellulare mancante dalle informazioni di contatto dell'utente. Tuttavia, è consigliabile prestare attenzione a evitare brutte sorprese, ad esempio scegliere l'opzione più costosa, ecc.
  • Richiedi altre informazioni : l'app può chiedere a Siri di richiedere all'utente il valore mancante. Tuttavia, la chiave qui è mantenere le conversazioni semplici e fino al punto. Gli utenti diventeranno rapidamente frustrati se devono rispondere a diverse domande per ottenere la richiesta.
  • Handle Misinformation Gracely : l'utente potrebbe fornire un valore che l'app non si aspetta o che non può gestire nel contesto specificato. Assicurarsi che l'app correla questa situazione all'utente in modo da renderla chiara e facile da correggere.

Quando l'app viene presentata con un singolo valore in questione, il modo preferito per gestire questa operazione consiste nell'chiedere conferma all'utente. Ad esempio, "Hai significato Bobo the Great?", che possono rispondere con una semplice risposta sì o no.

Quando si verifica una situazione in cui diverse scelte possibili potrebbero essere corrette per un singolo valore, la disambiguazione è il metodo di gestione preferito. In questa situazione Siri può richiedere all'utente fino a dieci opzioni possibili tra cui scegliere. Ad esempio:

Who do you want to send the message to?

* Bobo the Great!
* Bobo Jr.
* Little Bobo

Se ancora in questione, chiedere a Siri di fornire una risposta completamente nuova e più specifica per un determinato valore.

Richiedi conferma finale

Prima che l'app esegua effettivamente l'attività per soddisfare la richiesta dell'utente, Siri verificherà con l'estensione dell'app per assicurarsi che tutto sia disponibile. Ad esempio, l'utente ha abbastanza denaro nel proprio account per effettuare il pagamento richiesto?

Inoltre, l'app deve assicurarsi che fornisca tutte le informazioni possibili a Siri in modo che possa presentarla all'utente e verificare che l'attività che sta per essere eseguita soddisfi le proprie aspettative.

Dopo che l'utente ha confermato la richiesta e l'app l'ha eseguita, l'app deve di nuovo assicurarsi che abbia fornito tutti i risultati a Siri in modo che possa correlarli all'utente.

Risposta alla richiesta

Siri include diverse interfacce utente predefinite per ognuno dei domini e delle azioni di cui è a conoscenza. Tuttavia, se appropriato, l'app può fornire un'estensione dell'interfaccia utente finalità personalizzata per arricchire l'esperienza utente presentando la personalizzazione e l'interfaccia utente dell'app o più informazioni rispetto a quelle presenti nella richiesta.

Detto questo, la moderazione deve essere usata durante la progettazione di interfacce personalizzate per Siri. In genere, l'utente vuole eseguire un'attività specifica il più rapidamente possibile e non vuole essere sovraccaricata con informazioni non necessarie.

Prestare attenzione anche a garantire che l'interfaccia utente personalizzata sembri e risponda correttamente in tutti i diversi dispositivi iOS e orientamenti che l'utente potrebbe avere o usare il dispositivo.

Se appropriato, usare l'API SiriKit per nascondere le informazioni ridondanti già presenti nell'interfaccia utente predefinita di Siri. Tuttavia, assicurarsi che l'app fornisca ancora le informazioni a Siri in modo che possa presentarla verbalmente in situazioni mani libere.

Potrebbero esserci situazioni in cui Siri avvierà l'app per soddisfare la richiesta dell'utente, ad esempio la presentazione delle foto richieste dall'utente. In queste situazioni, non sorprendere l'utente. Visualizzare le informazioni previste senza che siano necessari passaggi intermedi o ulteriori interazioni. Non visualizzare mai informazioni o eseguire un'attività che l'utente non si aspetta.

Lucidatura del design

Ci sono diversi passaggi che Apple suggerisce di completare la progettazione delle interfacce di conversazione. Per prima cosa, è fornire esempi chiari e concisi del vocabolario e dei casi d'uso per Siri.

Uno dei modi in cui un utente scopre che l'app è avviando una conversazione con Siri e chiedendo: "Cosa puoi fare?" Siri mostrerà diverse cose che può fare, tra cui l'app dello sviluppatore e i casi d'uso hero di esempio forniti tramite il relativo plist file.

Come scrivere casi d'uso di esempio validi:

  • Assicurarsi che gli esempi includano il nome dell'app.
  • Mantenere l'esempio breve e verso il punto.
  • Fornire più esempi per ognuna delle finalità supportate dall'app.
  • Classificare in ordine di priorità sia le finalità che gli esempi all'interno di essi in base ai casi d'uso più comuni per l'app.
  • Assicurarsi che l'app fornisca esempi localizzati.
  • Assicurarsi che ogni esempio specificato funzioni come previsto all'interno dell'app.
  • Evitare di affrontare Siri negli esempi, quindi non includere testo come "Hey Siri..."
  • Evitare qualsiasi piacevolerietà non necessaria, ad esempio "per favore" o "grazie".

Dedicare il tempo appropriato per esplorare e sperimentare il modo in cui l'app può definire la conversazione che Siri ha con l'utente per suo conto. Assicurarsi di comunicare con gli utenti tipici durante il processo, perché le interazioni con e le aspettative dell'app potrebbero cambiare nel tempo.

Ricordarsi sempre di testare l'app in situazioni diverse e tutti i diversi metodi per richiamare una conversazione con Siri. Testare in posizioni reali che l'utente potrebbe usare l'app, lontano dall'ufficio e dalla scrivania.

Cerca di avere le conversazioni con Siri (per conto dell'app) essere fluido, naturale e "senti giusto".

Riepilogo

Questo articolo ha illustrato i concetti chiave necessari per usare SiriKit e ha mostrato che può interagire con le app Xamarin.iOS per fornire servizi accessibili all'utente usando Siri e l'app Mappe in un dispositivo iOS.