Engenharia Estrutural Civil &
Usando a API Ios Core Spotlight para habilitar a pesquisa de conteúdo em sua aplicação
Table of Contents
Introdução
Os usuários modernos de dispositivos móveis esperam acesso instantâneo à informação. A integração da pesquisa de nível de sistema no aplicativo iOS reduz drasticamente o atrito, permitindo que os usuários encontrem conteúdo sem abrir primeiro o aplicativo. A API Core Spotlight[] é o framework integrado da Apple para indexar conteúdo de aplicativo na busca global do Spotlight do dispositivo. Quando um usuário pesquisa na tela inicial ou dentro da visão de pesquisa, os itens indexados do aplicativo aparecem ao lado dos resultados do Mail, Mensagens e outros aplicativos do sistema. Este artigo fornece um guia abrangente e pronto para a produção para implementar o Core Spotlight, cobrindo tudo, desde indexação básica até a ligação profunda e ajuste de desempenho.
Compreender o Destaque Principal e seus benefícios
O Core Spotlight é um sistema de indexação leve e amigável à privacidade. Ele vive totalmente no dispositivo – nenhum dado sai do telefone do usuário a menos que você use explicitamente o CloudKit. Isso o torna ideal para conteúdo pessoal, como notas, contatos, documentos ou quaisquer dados gerados pelo usuário. Os principais benefícios incluem:
- Aumento do engajamento – Os usuários descobrem conteúdo que podem ter esquecido, impulsionando o uso repetido.
- Navegação sem costura – Ao tocar num resultado de pesquisa, pode abrir o seu aplicativo diretamente para a tela relevante.
- Capacidade offline – Os itens indexados permanecem pesquisáveis mesmo sem conectividade com a internet.
- Baixo custo de implementação – A API é pequena, bem documentada e se integra facilmente com modelos de dados existentes.
O Core Spotlight funciona ao lado da indexação NSUserActivity, mas para conteúdo estático ou frequentemente atualizado, a indexação direta do CSSearchableItem lhe dá um controle mais fino.
Pré-requisitos e Configuração
Antes de escrever o código, certifique-se de que seu projeto está configurado corretamente:
- Seu aplicativo deve atingir iOS 9 ou posterior (a API estreou com o iOS 9).
- Activar Capacidade do Spotlight no Xcode – sob A assinar as Capacidades do & adicionar o direito do "Spotlight". Isto é frequentemente incluído automaticamente na importação do framework.
- Importar o framework Spotlight Core e os serviços de coordenação móvel (para identificadores de tipo): e .
Não é necessária nenhuma configuração adicional do servidor ou permissão do usuário. A indexação acontece assincronicamente em segundo plano.
Criar e indexar itens pesquisáveis
O núcleo do Spotlight Core é o objeto . Cada item consiste em:
- A identificador único (por exemplo, ]] – utilizado posteriormente para tratar da selecção ou das actualizações.
- Identificador de domínio facultativo – itens relacionados com grupos (por exemplo, ]).
- Um conjunto de atributos () – descreve o conteúdo com propriedades como , , , , e muito mais.
Aqui está um exemplo completo Swift que indexa uma única nota:
import CoreSpotlight
import MobileCoreServices
func indexNote(note: Note) {
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
attributeSet.title = note.title
attributeSet.contentDescription = note.body
attributeSet.keywords = [note.title] + note.tags
if let imageData = note.thumbnail?.pngData() {
attributeSet.thumbnailData = imageData
}
let item = CSSearchableItem(
uniqueIdentifier: "com.yourapp.note.\(note.id)",
domainIdentifier: "com.yourapp.notes",
attributeSet: attributeSet
)
// Optionally set expiration date (default is one month)
// item.expirationDate = Date.distantFuture
CSSearchableIndex.default().indexSearchableItems([item]) { error in
if let error = error {
print("Indexing error: \(error.localizedDescription)")
} else {
print("Note indexed successfully.")
}
}
}
Propriedades do conjunto de atributos
O herda de e oferece dezenas de propriedades. Para a maioria dos aplicativos, o seguinte é essencial:
- – Texto curto e descritivo que aparece de forma proeminente.
- – Um trecho mais longo mostrado abaixo do título.
- – Array de para termos de pesquisa alternativos.
- ou – Visualização.
- – Ligações itens juntos (por exemplo, notas de pai-filho).
Para o conteúdo de mídia, use propriedades específicas de tipo como , , ou .
Atualizando e Excluindo Conteúdo Indexado
Quando o conteúdo do seu aplicativo muda, você deve manter o índice em sincronia. Use os mesmos métodos :
Atualizando um item
Chamada com o mesmo identificador único – a API substitui automaticamente a entrada antiga.
Excluindo itens
Usar [[FLT: 25]] ou [FLT: 26] para remover o conteúdo velho:
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
As operações em lote são eficientes: arrays de passagem para ou . Para uma redefinição completa, use (raramente necessário).
Manuseando a atividade do usuário e o vínculo profundo
Quando um usuário toca em um resultado do Spotlight, seu aplicativo recebe uma chamada através da continuação . Implemente o seguinte método de delegação no seu ou :
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
if let userInfo = userActivity.userInfo,
let identifier = userInfo[CSSearchableItemActivityIdentifier] as? String {
// Navigate to the item with this identifier
navigateToContent(identifier: identifier)
return true
}
}
return false
}
Estado de restauração
Para uma experiência mais suave, também implementar para mostrar um estado de carregamento. Em aplicativos baseados em cena (iOS 13+), use o método .
Ligação profunda com a NSUserActivity
O Core Spotlight também funciona com o mecanismo . Se você já indexar atividades via , você pode adicionar a bandeira . No entanto, para controle de grãos finos sobre títulos e descrições, use diretamente.
Melhores práticas para uma indexação eficaz
Seguindo estas diretrizes, seu conteúdo indexado continua sendo relevante e performante:
1. Índice apenas conteúdo significativo
Não indexe cada pequeno pedaço de dados. Foque-se em itens que os usuários provavelmente procurarão: documentos recentes, páginas de alto valor ou conteúdo com favoritos.
2. Definir datas de expiração adequadas
Por padrão, os itens expiram após um mês. Para conteúdo estático, defina . Para dados sensíveis ao tempo (por exemplo, lembretes de eventos), use uma data realista.
3. Use os identificadores de domínio sabiamente
Identificadores de domínio permitem- lhe apagar todos os itens de um grupo de uma vez. Por exemplo, se um utilizador apagar uma pasta, ligue para .
4. Fornecer Palavras-chave significativas
Inclua sinônimos, erros ortográficos comuns e nomes alternativos. Evite o excesso de recheio; 5-10 palavras-chave bem escolhidas são suficientes.
5. Evite a indexação de conteúdo duplicado
Se duplicar itens (por exemplo, o mesmo título em domínios diferentes), os usuários verão resultados confusos. Desduplicar no nível do aplicativo.
6. Operações em lote para atualizações em massa
Ao sincronizar muitos itens (por exemplo, após uma restauração na nuvem), faça um lote em arrays de 50-100 para evitar bloquear o thread principal. Use com um array, não várias chamadas individuais.
Desempenho e Considerações sobre Baterias
O Core Spotlight executa um processo de fundo de baixa prioridade. Mas a má implementação pode drenar o desempenho da bateria ou degradar o sistema:
- Limite a frequência de reindexação – Apenas reindexar quando os dados realmente mudam, não em cada lançamento de aplicativos.
- Acelere grandes operações – Use e (disponível em ]) para atualizações atômicas.
- Evitar imagens pesadas – ] deve ser pequeno (por exemplo, 64 × 64 pontos, JPEG comprimido). Imagens grandes aumentam a pressão da memória.
- Use o índice padrão – é suficiente para quase todos os aplicativos. Criar índices personalizados raramente é necessário.
A documentação do Core Spotlight da Apple sublinha que a indexação deve ser tratada como “fogo e esquecimento” – não espere síncronamente por chamadas de conclusão no tópico principal.
Testando a Integração de Destaques do Núcleo
Depurar resultados do Spotlight pode ser complicado porque eles nem sempre aparecem imediatamente. Siga esta estratégia de teste:
- Testes de simuladores – Use o iOS Simulator (iOS 15 ou posterior). Após a indexação, espere alguns segundos e puxe a tela inicial para pesquisar. Esteja ciente de que os resultados podem demorar mais no Simulator.
- Teste de dispositivo – Sempre teste em um dispositivo físico. A indexação de spotlight se comporta de forma mais agressiva em hardware real.
- Redefinir o índice – Utilizar a app Definições: Geral → Spotlight Search → Activar e desactivar a sua aplicação. Isto limpa o índice e força um novo início.
- Verificar a exclusão – Após a exclusão de um item, certifique-se de que o antigo resultado não mais aparece. Às vezes, os resultados de cache do sistema; dê-o até 30 segundos.
- Verifique o console de depuração – Habilite loging passando nos argumentos de esquema do Xcode.
Um recurso útil é WWDC 2015 “Introduzindo o Spotlight Core”, que abrange conceitos de fundação ainda aplicáveis hoje.
Conclusão
A API do Core Spotlight é uma ferramenta robusta e subutilizada que pode transformar a forma como os utilizadores interagem com o seu aplicativo. Ao adicionar conteúdo relevante e actualizado ao índice de pesquisa do sistema, você fornece um caminho sem atrito da pesquisa ao conteúdo – aumentando o engajamento e a retenção. Comece pequeno: indexe primeiro o seu conteúdo mais importante, teste cuidadosamente e depois expanda-se para cobrir itens secundários. Lembre-se de manter o seu índice limpo, utilize identificadores únicos de forma consistente e lide com os callbacks de atividade do usuário graciosamente. Com os passos descritos neste artigo, você está pronto para fornecer uma experiência de pesquisa de primeira classe que se sinta nativa do iOS.
Para mais informações, consultar o Referência do quadro do Spotlight Core e o Guia de Programação de Pesquisa do App.