Compartilhar via


Pesquisar com o Core Spotlight no Xamarin.iOS

O Core Spotlight é uma nova estrutura para iOS 9 que apresenta uma API semelhante a um banco de dados para adicionar, editar ou excluir links para conteúdo em seu aplicativo. Os itens que foram adicionados usando o Core Spotlight estarão disponíveis na pesquisa do Spotlight no dispositivo iOS.

Para obter um exemplo dos tipos de conteúdo que podem ser indexados usando o Core Spotlight, consulte os aplicativos Mensagens, Mail, Calendário e Notas da Apple. Atualmente, todos eles usam o Core Spotlight para fornecer resultados de pesquisa.

Criando um item

Veja a seguir um exemplo de criação de um item e indexação usando o 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);
    }
});

Essas informações apareceriam da seguinte forma em um resultado de pesquisa:

Visão geral dos resultados de pesquisa do Core Spotlight

Restaurando um item

Quando o usuário toca em um item adicionado ao resultado da Pesquisa por meio do Core Spotlight para seu aplicativo, o AppDelegate método ContinueUserActivity é chamado (esse método também é usado para NSUserActivity). Por exemplo:

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

Note que desta vez estamos verificando se a atividade tem um ActivityType de CSSearchableItem.ActionType.

Atualizando um item

Pode haver momentos em que um Item de Índice que criamos com o Core Spotlight precise ser modificado, como uma alteração no título ou na imagem em miniatura. Para fazer essa alteração, usamos o mesmo método usado para criar inicialmente o índice. Criamos um novo CSSearchableItem usando o mesmo ID que foi usado para criar o item e anexamos um novo CSSearchableItemAttributeSet contendo os atributos modificados:

Atualizando uma visão geral de um item

Quando esse item é gravado no índice pesquisável, o item existente é atualizado com as novas informações.

Excluindo um item

O Core Spotlight oferece várias maneiras de excluir um item de índice quando ele não é mais necessário.

Primeiro, você pode excluir um item por seu identificador, por exemplo:

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

Em seguida, você pode excluir um grupo de itens de índice por seu nome de domínio. Por exemplo:

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

Finalmente, você pode excluir todos os itens de índice com o seguinte código:

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

Recursos adicionais do Core Spotlight

O Core Spotlight tem os seguintes recursos que ajudam a manter o índice preciso e atualizado:

  • Suporte à atualização em lote – Se seu aplicativo precisar criar ou modificar um grande grupo de índices ao mesmo tempo, o lote inteiro poderá ser enviado para o IndexCSSearchableIndex método da classe em uma chamada.
  • Responder a alterações de índice – O uso do CSSearchableIndexDelegate seu aplicativo pode responder a alterações e notificações do índice pesquisável.
  • Aplicar proteção de dados – Usando as classes de proteção de dados, você pode implementar a segurança nos itens adicionados ao índice pesquisável usando o Core Spotlight.