Hledání pomocí Core Spotlightu v Xamarin.iOS

Core Spotlight je nová architektura pro iOS 9, která představuje rozhraní API podobné databázi, které umožňuje přidávat, upravovat nebo odstraňovat odkazy na obsah v aplikaci. Položky přidané pomocí Core Spotlightu budou dostupné ve vyhledávání Spotlightu na zařízení s iOSem.

Příklad typů obsahu, které je možné indexovat pomocí Core Spotlightu, najdete v aplikacích Apple Messages, Mail, Calendar a Notes. Všichni aktuálně používají Core Spotlight k poskytování výsledků hledání.

Vytvoření položky

Následuje příklad vytvoření položky a jeho indexování pomocí Core Spotlightu:

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

Tyto informace by ve výsledku hledání vypadaly takto:

Core Spotlight search result overview

Obnovení položky

Když uživatel klepne na položku přidanou do výsledku hledání prostřednictvím Core Spotlightu pro vaši aplikaci, AppDelegate zavolá se metoda ContinueUserActivity (tato metoda se používá také pro NSUserActivity). Příklad:

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

Všimněte si, že tentokrát kontrolujeme aktivitu, která má ActivityType .CSSearchableItem.ActionType

Aktualizace položky

Někdy může docházet k tomu, že je potřeba upravit položku indexu, kterou jsme vytvořili s hlavním spotlightem, třeba změnit název nebo miniaturu obrázku. K provedení této změny používáme stejnou metodu jako při počátečním vytvoření indexu. Vytvoříme nové CSSearchableItem pomocí stejného ID, jaké bylo použito k vytvoření položky, a připojíme nový CSSearchableItemAttributeSet obsahující upravené atributy:

Updating an Item overview

Když je tato položka zapsána do prohledávatelného indexu, stávající položka se aktualizuje o nové informace.

Odstranění položky

Core Spotlight nabízí několik způsobů, jak odstranit položku indexu, když už ji nepotřebujete.

Nejprve můžete položku odstranit podle jeho identifikátoru, například:

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

Dále můžete odstranit skupinu položek indexu podle názvu domény. Příklad:

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

Nakonec můžete všechny indexové položky odstranit pomocí následujícího kódu:

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

Další základní funkce spotlightu

Core Spotlight má následující funkce, které pomáhají udržovat index přesný a aktuální:

  • Podpora dávkové aktualizace – Pokud vaše aplikace potřebuje vytvořit nebo upravit velkou skupinu indexů najednou, může být celá dávka odeslána do Index metody CSSearchableIndex třídy v jednom volání.
  • Reakce na změny indexu – Použití CSSearchableIndexDelegate aplikace může reagovat na změny a oznámení z prohledávatelného indexu.
  • Použít ochranu dat – Pomocí tříd ochrany dat můžete implementovat zabezpečení u položek, které přidáte do prohledávatelného indexu pomocí Core Spotlightu.