Condividi tramite


Eseguire ricerche con Core Spotlight in Xamarin.iOS

Core Spotlight è un nuovo framework per iOS 9 che presenta un'API simile al database per aggiungere, modificare o eliminare collegamenti al contenuto all'interno dell'app. Gli elementi aggiunti con Core Spotlight saranno disponibili nella ricerca Spotlight nel dispositivo iOS.

Per un esempio dei tipi di contenuto che è possibile indicizzare usando Core Spotlight, esaminare le app Messaggi, Posta, Calendario e Note di Apple. Attualmente usano Core Spotlight per fornire risultati di ricerca.

Creazione di un elemento

Di seguito è riportato un esempio di creazione di un elemento e dell'indicizzazione tramite Core Spotlight:

using CoreSpotlight;
...

// Create attributes to describe an item
var attributes = new CSSearchableItemAttributeSet();
attributes.Title = "App Center Test";
attributes.ContentDescription = "Automatically test your app on 1,000 devices in the cloud.";

// Create item
var item = new CSSearchableItem ("1", "products", attributes);

// Index item
CSSearchableIndex.DefaultSearchableIndex.Index (new CSSearchableItem[]{ item }, (error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

Queste informazioni vengono visualizzate come segue in un risultato della ricerca:

Panoramica dei risultati della ricerca Core Spotlight

Ripristino di un elemento

Quando l'utente tocca un elemento aggiunto al risultato della ricerca tramite Core Spotlight per l'app, viene chiamato il AppDelegate metodo (questo metodo ContinueUserActivity viene usato anche per NSUserActivity). 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;
    default:
        if (userActivity.ActivityType == CSSearchableItem.ActionType.ToString ()) {
            // Display content for searchable item...
        }
        break;
    }

    return true;
}

Si noti che questa volta viene verificata la presenza dell'attività con .ActivityTypeCSSearchableItem.ActionType

Aggiornamento di un elemento

In alcuni casi potrebbe essere necessario modificare un elemento di indice creato con Core Spotlight, ad esempio una modifica del titolo o dell'immagine di anteprima. Per apportare questa modifica, viene usato lo stesso metodo usato per creare inizialmente l'indice. Viene creato un nuovo CSSearchableItem oggetto usando lo stesso ID usato per creare l'elemento e allegare un nuovo CSSearchableItemAttributeSet oggetto contenente gli attributi modificati:

Panoramica dell'aggiornamento di un elemento

Quando questo elemento viene scritto nell'indice ricercabile, l'elemento esistente viene aggiornato con le nuove informazioni.

Eliminazione di un elemento

Core Spotlight offre diversi modi per eliminare un elemento di indice quando non è più necessario.

In primo luogo, è possibile eliminare un elemento in base al relativo identificatore, ad esempio:

// Delete Items by ID
CSSearchableIndex.DefaultSearchableIndex.Delete(new string[]{"1","16"},(error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

Successivamente, è possibile eliminare un gruppo di elementi di indice in base al nome di dominio. Ad esempio:

// Delete by Domain Name
CSSearchableIndex.DefaultSearchableIndex.DeleteWithDomain(new string[]{"domain-name"},(error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

Infine, è possibile eliminare tutti gli elementi di indice con il codice seguente:

// Delete all index items
CSSearchableIndex.DefaultSearchableIndex.DeleteAll((error) => {
    // Successful?
    if (error !=null) {
        Console.WriteLine(error.LocalizedDescription);
    }
});

Funzionalità di contenuti in evidenza di base aggiuntive

Core Spotlight offre le funzionalità seguenti che consentono di mantenere l'indice accurato e aggiornato:

  • Supporto per gli aggiornamenti batch: se l'app deve creare o modificare un gruppo di indici di grandi dimensioni contemporaneamente, l'intero batch può essere inviato al Index metodo della CSSearchableIndex classe in una sola chiamata.
  • Rispondere alle modifiche apportate all'indice: l'uso dell'app CSSearchableIndexDelegate può rispondere alle modifiche e alle notifiche dall'indice ricercabile.
  • Applica protezione dati: usando le classi di protezione dei dati, è possibile implementare la sicurezza per gli elementi aggiunti all'indice ricercabile usando Core Spotlight.