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:
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:
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
metodyCSSearchableIndex
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.