Suche mit Core Spotlight in Xamarin.iOS

Core Spotlight ist ein neues Framework für iOS 9, das eine datenbankähnliche API zum Hinzufügen, Bearbeiten oder Löschen von Links zu Inhalten in Ihrer App darstellt. Elemente, die mithilfe von Core Spotlight hinzugefügt wurden, sind in der Spotlight-Suche auf dem iOS-Gerät verfügbar.

Ein Beispiel für die Inhaltstypen, die mit Core Spotlight indiziert werden können, finden Sie in den Apps "Nachrichten", "E-Mail", "Kalender" und "Notizen" von Apple. Sie alle verwenden derzeit Core Spotlight, um Suchergebnisse bereitzustellen.

Erstellen eines Elements

Im Folgenden sehen Sie ein Beispiel für das Erstellen eines Elements und das Indizieren eines Elements mithilfe von 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);
    }
});

Diese Informationen werden in einem Suchergebnis wie folgt angezeigt:

Core Spotlight search result overview

Wiederherstellen eines Elements

Wenn der Benutzer auf ein Element tippt, das dem Suchergebnis über Core Spotlight für Ihre App hinzugefügt wird, wird die AppDelegate Methode ContinueUserActivity aufgerufen (diese Methode wird auch für NSUserActivity). Zum Beispiel:

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;
}

Beachten Sie, dass wir dieses Mal überprüfen, ob die Aktivität eine ActivityType von CSSearchableItem.ActionType.

Aktualisieren eines Elements

Es kann vorkommen, dass ein indexelement, das mit Core Spotlight erstellt wurde, geändert werden muss, z. B. eine Änderung des Titels oder miniaturbilds erforderlich ist. Um diese Änderung vorzunehmen, verwenden wir dieselbe Methode wie zum ersten Erstellen des Indexes. Wir erstellen eine neue CSSearchableItem mit derselben ID, die zum Erstellen des Elements verwendet wurde, und fügen eine neue CSSearchableItemAttributeSet mit den geänderten Attributen an:

Updating an Item overview

Wenn dieses Element in den durchsuchbaren Index geschrieben wird, wird das vorhandene Element mit den neuen Informationen aktualisiert.

Löschen eines Elements

Core Spotlight bietet mehrere Möglichkeiten, ein Indexelement zu löschen, wenn es nicht mehr erforderlich ist.

Zuerst können Sie ein Element anhand seines Bezeichners löschen, z. B.:

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

Als Nächstes können Sie eine Gruppe von Indexelementen anhand ihrer Aufgaben löschen Standard Name. Zum Beispiel:

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

Schließlich können Sie alle Indexelemente mit dem folgenden Code löschen:

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

Zusätzliche Kern-Spotlight-Features

Core Spotlight verfügt über die folgenden Features, die dazu beitragen, den Index genau und auf dem neuesten Stand zu halten:

  • Unterstützung für Batchaktualisierungen – Wenn Ihre App gleichzeitig eine große Gruppe von Indizes erstellen oder ändern muss, kann der gesamte Batch an die Index Methode der CSSearchableIndex Klasse in einem Aufruf gesendet werden.
  • Reagieren sie auf Indexänderungen – Die Verwendung der CSSearchableIndexDelegate App kann auf Änderungen und Benachrichtigungen aus dem durchsuchbaren Index reagieren.
  • Anwenden von Datenschutz – Mithilfe der Datenschutzklassen können Sie die Sicherheit für die Elemente implementieren, die Sie mithilfe von Core Spotlight zum durchsuchbaren Index hinzufügen.