Eseguire ricerche con NSUserActivity in Xamarin.iOS
NSUserActivity
è stato introdotto in iOS 8 e viene usato per fornire i dati per Handoff.
Consente di creare attività in parti specifiche dell'app che possono quindi essere passate a un'altra istanza dell'app in esecuzione in un dispositivo iOS diverso. Il dispositivo ricevente può quindi continuare l'attività avviata nel dispositivo precedente, raccogliendo a destra dove l'utente ha interrotto. Per altre informazioni sull'uso di Handoff, vedere la documentazione introduttiva all'handoff .
Una novità di iOS 9 NSUserActivity
può essere indicizzata (pubblicamente e privatamente) e cercata da Spotlight Search e Safari. Contrassegnando un oggetto NSUserActivity
come ricercabile e aggiungendo metadati indicizzati, l'attività può essere elencata nei risultati della ricerca nel dispositivo iOS.
Se l'utente seleziona un risultato di ricerca appartenente a un'attività dall'app, l'app verrà avviata e l'attività descritta da NSUserActivity
verrà riavviata e presentata all'utente.
Le proprietà seguenti di NSUserActivity
vengono usate per supportare Ricerca app:
EligibleForHandoff
- Setrue
, questa attività può essere usata in un'operazione handoff.EligibleForSearch
- Setrue
, questa attività verrà aggiunta all'indice sul dispositivo e presentata nei risultati della ricerca.EligibleForPublicIndexing
- Setrue
, questa attività verrà aggiunta all'indice basato sul cloud di Apple e presentata agli utenti (tramite ricerca) che non hanno già installato l'app nel dispositivo iOS. Per altri dettagli, vedere la sezione Indicizzazione della ricerca pubblica di seguito.Title
: fornisce un titolo per l'attività e viene visualizzato nei risultati della ricerca. Gli utenti possono anche cercare il testo del titolo stesso.Keywords
: matrice di stringhe usata per descrivere l'attività che verrà indicizzata e resa ricercabile dall'utente finale.ContentAttributeSet
: vieneCSSearchableItemAttributeSet
usato per descrivere ulteriormente l'attività in dettaglio e fornire contenuti avanzati nei risultati della ricerca.ExpirationDate
: se si desidera che un'attività venga visualizzata solo fino a una data specificata, è possibile specificare tale data qui.WebpageURL
- Se l'attività può essere visualizzata sul Web o se l'app supporta i collegamenti diretti di Safari, puoi impostare il collegamento da visitare qui.
Guida introduttiva A NSUserActivity
Segui queste istruzioni per implementare una ricerca nella NSUserActivity
tua app:
- Creazione di identificatori del tipo di attività
- Creazione di un'attività
- Risposta a un'attività
- Indicizzazione della ricerca pubblica
Esistono alcuni vantaggi aggiuntivi da usare NSUserActivity
per rendere il contenuto ricercabile.
Creazione di identificatori del tipo di attività
Prima di poter creare un'attività di ricerca, è necessario creare un identificatore del tipo di attività per identificarlo. L'identificatore del tipo di attività è una stringa breve aggiunta alla NSUserActivityTypes
matrice del file Info.plist dell'app usata per identificare in modo univoco un determinato tipo di attività utente. Nella matrice sarà presente una voce per ogni attività supportata dall'app ed esposta a Ricerca app.
Apple suggerisce di usare una notazione in stile DNS inversa per l'identificatore del tipo di attività per evitare conflitti. Ad esempio: com.company-name.appname.activity
per attività specifiche basate su app o com.company-name.activity
per attività che possono essere eseguite tra più app.
L'identificatore del tipo di attività viene usato durante la creazione di un'istanza NSUserActivity
per identificare il tipo di attività. Quando un'attività viene continuata come risultato del tocco di un risultato della ricerca, il tipo di attività (insieme all'ID team dell'app) determina l'app da avviare per continuare l'attività.
Per creare gli identificatori del tipo di attività necessari per supportare questo comportamento, modificare il file Info.plist e passare alla visualizzazione Origine . Aggiungere una NSUserActivityTypes
chiave e creare identificatori nel formato seguente:
Nell'esempio precedente è stato creato un nuovo identificatore del tipo di attività per l'attività di ricerca (com.xamarin.platform
). Quando si creano app personalizzate, sostituire il contenuto della NSUserActivityTypes
matrice con gli identificatori del tipo di attività specifici per le attività supportate dall'app.
Creazione di un'attività
Di seguito è riportato un esempio di creazione di un'attività per una ricerca ospitata nell'indice del dispositivo:
// Create App Search Activity
var activity = new NSUserActivity ("com.xamarin.platform");
// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));
// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;
// Add App Search ability
activity.EligibleForSearch = true;
activity.BecomeCurrent();
È possibile aggiungere altri dettagli impostando la ContentAttributeSet
proprietà di NSUserActivity
come segue:
Usando un ContentAttributeSet
oggetto è possibile creare risultati di ricerca avanzati che consentono all'utente finale di interagire con essi.
Risposta a un'attività
Per rispondere all'utente toccando un risultato di ricerca (NSUserActivity
) per l'app, modificare il file AppDelegate.cs ed eseguire l'override del ContinueUserActivity
metodo . Ad esempio:
public override bool ContinueUserActivity (UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{
// Take action based on the activity type
switch (userActivity.ActivityType) {
case "com.xamarin.platform":
// Restore the state of the app here...
break;
}
return true;
}
Si noti che si tratta dello stesso override del metodo usato per rispondere alle richieste handoff. A questo punto, se l'utente fa clic su un collegamento dall'app nei risultati della ricerca spotlight, l'app verrà visualizzata in primo piano (o avviata se non è già in esecuzione) e il contenuto, lo spostamento o la funzionalità rappresentati da tale collegamento verranno visualizzati:
Indicizzazione della ricerca pubblica
Come abbiamo visto in precedenza, iOS 9 semplifica l'accesso alla ricerca al contenuto e alle funzionalità dell'app che l'utente ha già individuato e usato in un determinato dispositivo iOS. Con l'indicizzazione pubblica, iOS 9 consente agli utenti che non hanno ancora individuato contenuti o funzionalità (o che non hanno ancora installato l'app) di ottenere tali risultati anche nelle ricerche.
L'indicizzazione pubblica funziona nel modo seguente:
- Quando crei un'attività per la tua app, puoi contrassegnarla come pubblica.
- Le attività pubbliche vengono inviate ad Apple e indicizzate nel cloud.
- Man mano che più utenti interagiscono con l'app in un dispositivo e usano la funzionalità o il contenuto specifico rappresentato dall'attività, aumenta la classificazione.
- I risultati pubblici più diffusi saranno disponibili per altri utenti, anche se l'app non è installata.
- Questi risultati pubblici verranno visualizzati in Ricerca spotlight e Safari (se l'attività include un URL).
È possibile eseguire l'attività di ricerca privata creata in precedenza ed espanderla in modo che sia pubblica:
// Create App Search Activity
var activity = new NSUserActivity ("com.xamarin.platform");
// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));
// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;
// Add App Search ability
activity.EligibleForSearch = true;
activity.EligibleForPublicIndexing = true;
activity.BecomeCurrent();
Solo perché un'attività è stata impostata per l'indicizzazione pubblica impostando EligibleForPublicIndexing = true
, non significa che verrà aggiunta automaticamente all'indice cloud pubblico di Apple. Prima di tutto devono essere soddisfatte le condizioni seguenti:
- Deve essere visualizzato nei risultati della ricerca ed essere selezionato da molti utenti. I risultati rimangono privati fino a quando non viene raggiunta una soglia di engagement delle attività.
- Il provisioning delle app impedisce che i dati specifici dell'utente vengano indicizzati e resi pubblici.
Vantaggi aggiuntivi
Adottando Ricerca app tramite NSUserActivity
l'app, si ottengono anche le funzionalità seguenti:
- Handoff : poiché Ricerca app espone contenuto, spostamento e/o funzionalità usando lo stesso meccanismo di Handoff (
NSUserActivity
), è possibile consentire facilmente agli utenti dell'app di avviare un'attività in un dispositivo e continuarla su un altro. - Suggerimenti di Siri: insieme ai suggerimenti standard normalmente eseguiti da Siri Suggestions, gli attivi dell'app possono essere suggeriti automaticamente.
- Siri Smart Reminders : gli utenti potranno chiedere a Siri di ricordargli le attività dell'app.