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:
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:
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
Index
CSSearchableIndex
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.