Wyszukiwanie za pomocą funkcji Core Spotlight na platformie Xamarin.iOS
Core Spotlight to nowa struktura dla systemu iOS 9, która przedstawia interfejs API przypominający bazę danych do dodawania, edytowania lub usuwania linków do zawartości w aplikacji. Elementy, które zostały dodane przy użyciu funkcji Core Spotlight, będą dostępne w wyszukiwaniu W centrum uwagi na urządzeniu z systemem iOS.
Przykładowe typy zawartości, które można indeksować przy użyciu funkcji Core Spotlight, zapoznaj się z aplikacjami Wiadomości, Poczta, Kalendarz i Notatki firmy Apple. Wszystkie obecnie używają funkcji Core Spotlight do dostarczania wyników wyszukiwania.
Tworzenie elementu
Poniżej przedstawiono przykład tworzenia elementu i indeksowania go przy użyciu funkcji 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);
}
});
Te informacje będą wyglądać następująco w wynikach wyszukiwania:
Przywracanie elementu
Gdy użytkownik naciągnie element dodany do wyniku wyszukiwania za pośrednictwem funkcji Core Spotlight dla aplikacji, AppDelegate
metoda ContinueUserActivity
jest wywoływana (ta metoda jest również używana dla NSUserActivity
elementu ). Na przykład:
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;
}
Należy pamiętać, że tym razem sprawdzamy, czy działanie ma ActivityType
wartość CSSearchableItem.ActionType
.
Aktualizowanie elementu
Może wystąpić potrzeba zmodyfikowania elementu indeksu utworzonego za pomocą funkcji W centrum uwagi Core, na przykład zmiany tytułu lub obrazu miniatury. Aby wprowadzić tę zmianę, użyjemy tej samej metody, która została użyta do początkowego utworzenia indeksu.
Tworzymy nowy CSSearchableItem
przy użyciu tego samego identyfikatora, który został użyty do utworzenia elementu i dołączymy nowy CSSearchableItemAttributeSet
zawierający zmodyfikowane atrybuty:
Gdy ten element zostanie zapisany w indeksie z możliwością wyszukiwania, istniejący element zostanie zaktualizowany o nowe informacje.
Usuwanie elementu
Funkcja Core Spotlight oferuje wiele sposobów usuwania elementu indeksu, gdy nie jest już wymagany.
Najpierw możesz usunąć element według jego identyfikatora, na przykład:
// Delete Items by ID
CSSearchableIndex.DefaultSearchableIndex.Delete(new string[]{"1","16"},(error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Następnie możesz usunąć grupę elementów indeksu według ich nazwy domeny. Na przykład:
// Delete by Domain Name
CSSearchableIndex.DefaultSearchableIndex.DeleteWithDomain(new string[]{"domain-name"},(error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Na koniec możesz usunąć wszystkie elementy indeksu przy użyciu następującego kodu:
// Delete all index items
CSSearchableIndex.DefaultSearchableIndex.DeleteAll((error) => {
// Successful?
if (error !=null) {
Console.WriteLine(error.LocalizedDescription);
}
});
Dodatkowe podstawowe funkcje w centrum uwagi
Funkcja Core Spotlight oferuje następujące funkcje, które pomagają zachować dokładność i aktualność indeksu:
- Obsługa aktualizacji usługi Batch — jeśli aplikacja musi jednocześnie utworzyć lub zmodyfikować dużą grupę indeksów, cała partia może zostać wysłana do
Index
metodyCSSearchableIndex
klasy w jednym wywołaniu. - Odpowiadanie na zmiany indeksu — użycie
CSSearchableIndexDelegate
aplikacji może reagować na zmiany i powiadomienia z indeksu z możliwością wyszukiwania. - Zastosuj ochronę danych — za pomocą klas ochrony danych można zaimplementować zabezpieczenia elementów dodawalnych do indeksu z możliwością wyszukiwania przy użyciu funkcji Core Spotlight.