Compartilhar via


Pesquisar com NSUserActivity no Xamarin.iOS

NSUserActivity foi introduzido no iOS 8 e é usado para fornecer os dados para Handoff. Ele permite que você crie atividades em partes específicas do seu aplicativo que podem ser passadas para outra instância do seu aplicativo em execução em um dispositivo iOS diferente. O dispositivo receptor pode então continuar a atividade iniciada no dispositivo anterior, retomando exatamente de onde o usuário parou. Para obter mais informações sobre como usar o Handoff, consulte nossa documentação de Introdução ao Handoff .

Novo no iOS 9, NSUserActivity pode ser indexado (pública e privadamente) e pesquisado no Spotlight Search e no Safari. Ao marcar um NSUserActivity como pesquisável e adicionar metadados indexáveis, a atividade pode ser listada nos resultados da pesquisa no dispositivo iOS.

Visão geral do Histórico do aplicativo

Se o usuário selecionar um resultado de pesquisa que pertença a uma atividade do seu aplicativo, o aplicativo será iniciado e a atividade descrita pelo NSUserActivity será reiniciada e apresentada ao usuário.

As seguintes propriedades do são usadas para oferecer suporte à Pesquisa de NSUserActivity Aplicativos:

  • EligibleForHandoff – Se true, esta atividade pode ser usada em uma operação Handoff.
  • EligibleForSearch – Se true, esta atividade será adicionada ao índice no dispositivo e apresentada nos resultados da pesquisa.
  • EligibleForPublicIndexing – Se true, esta atividade será adicionada ao índice baseado na nuvem da Apple e apresentada aos usuários (via pesquisa) que ainda não instalaram seu aplicativo em seu dispositivo iOS. Consulte a seção Indexação de Pesquisa Pública abaixo para obter mais detalhes.
  • Title – Fornece um título para sua atividade e é exibido nos resultados da pesquisa. Os usuários também podem pesquisar o texto do próprio título.
  • Keywords – É uma matriz de strings usada para descrever sua atividade que será indexada e tornada pesquisável pelo usuário final.
  • ContentAttributeSet – É um CSSearchableItemAttributeSet usado para descrever melhor sua atividade em detalhes e fornecer conteúdo rico nos resultados da pesquisa.
  • ExpirationDate – Se você quiser que uma atividade só seja exibida até uma determinada data, você pode fornecer essa data aqui.
  • WebpageURL – Se a atividade pode ser visualizada na web ou se o seu aplicativo suporta links profundos do Safari, você pode definir o link para visitar aqui.

NSUserActivity Guia de início rápido

Siga estas instruções para implementar um pesquisável NSUserActivity em seu aplicativo:

Há alguns benefícios adicionais a serem usados NSUserActivity para tornar seu conteúdo pesquisável.

Criando identificadores de tipo de atividade

Antes de criar uma Atividade de Pesquisa, você precisará criar um Identificador de Tipo de Atividade para identificá-la. O Identificador de Tipo de Atividade é uma cadeia de caracteres curta adicionada à NSUserActivityTypes matriz do arquivo Info.plist do aplicativo usada para identificar exclusivamente um determinado Tipo de Atividade do Usuário. Haverá uma entrada na matriz para cada atividade que o aplicativo oferece suporte e expõe à Pesquisa de Aplicativos.

A Apple sugere o uso de uma notação no estilo DNS reverso para o Identificador de Tipo de Atividade para evitar colisões. Por exemplo: com.company-name.appname.activity para atividades específicas baseadas em aplicativos ou com.company-name.activity para atividades que podem ser executadas em vários aplicativos.

O Identificador de Tipo de Atividade é usado ao criar uma NSUserActivity instância para identificar o tipo de atividade. Quando uma atividade é continuada como resultado do toque do usuário em um resultado de pesquisa, o Tipo de Atividade (junto com a ID da Equipe do aplicativo) determina qual aplicativo iniciar para continuar a atividade.

Para criar os identificadores de tipo de atividade necessários para oferecer suporte a esse comportamento, edite o arquivo Info.plist e alterne para o modo de exibição Origem . Adicione uma NSUserActivityTypes chave e crie identificadores no seguinte formato:

A chave NSUserActivityTypes e os identificadores necessários no editor plist

No exemplo acima, criamos um novo Identificador de Tipo de Atividade para a atividade de pesquisa (com.xamarin.platform). Ao criar seus próprios aplicativos, substitua o conteúdo da matriz pelos Identificadores de Tipo de NSUserActivityTypes Atividade específicos para as atividades que seu aplicativo suporta.

Criando uma atividade

Veja a seguir um exemplo de criação de uma atividade para uma pesquisa hospedada de índice no dispositivo:

// Create App Search Activity
var activity = new NSUserActivity ("com.xamarin.platform");

// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));

// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;

// Add App Search ability
activity.EligibleForSearch = true;
activity.BecomeCurrent();

Poderíamos adicionar mais detalhes definindo a ContentAttributeSet propriedade do nosso NSUserActivity da seguinte forma:

Visão geral dos Detalhes da Pesquisa de Adição

Usando um ContentAttributeSet você pode criar resultados de pesquisa avançados que seduzem o usuário final a interagir com eles.

Respondendo a uma atividade

Para responder ao usuário tocando em um resultado de pesquisa (NSUserActivity) para nosso aplicativo, edite o arquivo AppDelegate.cs e substitua o ContinueUserActivity método. 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;
    }

    return true;
}

Observe que essa é a mesma substituição de método usada para responder a solicitações de Handoff. Agora, se o usuário clicar em um link de nosso aplicativo nos resultados da Pesquisa do Spotlight, nosso aplicativo será trazido para o primeiro plano (ou iniciado, se ainda não estiver em execução) e o conteúdo, navegação ou recurso representado por esse link será exibido:

Restaurar estado anterior da pesquisa

Indexação de pesquisa pública

Como vimos acima, o iOS 9 facilita o acesso de pesquisa ao conteúdo e recursos do aplicativo que o usuário já descobriu e usou em um determinado dispositivo iOS. Com a Indexação Pública, o iOS 9 oferece uma maneira para os usuários que ainda não descobriram conteúdo ou recursos (ou que nem sequer instalaram o aplicativo) obterem esses resultados em suas pesquisas também.

A Indexação Pública funciona da seguinte maneira:

  1. Ao criar uma atividade para seu aplicativo, você pode marcá-la como pública.
  2. As atividades públicas são enviadas para a Apple e indexadas na nuvem.
  3. À medida que mais usuários interagem com seu aplicativo em um dispositivo e usam o recurso ou conteúdo específico representado pela atividade, ele aumenta de classificação.
  4. Os resultados públicos populares estarão disponíveis para outros usuários, mesmo que eles não tenham o aplicativo instalado.
  5. Esses resultados públicos aparecerão na Pesquisa do Spotlight e no Safari (se a atividade incluir um URL).

Podemos pegar a atividade de pesquisa privada que criamos acima e expandi-la para ser pública:

// Create App Search Activity
var activity = new NSUserActivity ("com.xamarin.platform");

// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));

// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;

// Add App Search ability
activity.EligibleForSearch = true;
activity.EligibleForPublicIndexing = true;
activity.BecomeCurrent();

Só porque uma atividade foi definida para indexação pública definindo EligibleForPublicIndexing = true, isso não significa que ela será adicionada automaticamente ao índice de nuvem pública da Apple. Em primeiro lugar, devem ser satisfeitas as seguintes condições:

  1. Ele deve aparecer nos resultados da pesquisa e ser selecionado por muitos usuários. Os resultados permanecem privados até que um limite de engajamento de atividade seja atingido.
  2. O provisionamento de aplicativos impede que quaisquer dados específicos do usuário sejam indexados e tornados públicos.

Benefícios Adicionais

Ao adotar a Pesquisa de Aplicativos via NSUserActivity em seu aplicativo, você também obtém os seguintes recursos:

  • Handoff - Como a Pesquisa de aplicativos está expondo conteúdo, navegação e/ou recursos usando o mesmo mecanismo que o Handoff (NSUserActivity), você pode facilmente permitir que os usuários do aplicativo iniciem uma atividade em um dispositivo e a continuem em outro.
  • Sugestões da Siri - Junto com as sugestões padrão que as Sugestões da Siri normalmente fazem, os ativos do seu aplicativo podem ser sugeridos automaticamente.
  • Lembretes inteligentes da Siri - Os usuários poderão pedir à Siri para lembrá-los sobre as atividades do seu aplicativo.