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:

Core Spotlight search result overview

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 NSUserActivityelementu ). 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:

Updating an Item overview

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 metody CSSearchableIndex 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.