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.
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
– Setrue
, esta atividade pode ser usada em uma operação Handoff.EligibleForSearch
– Setrue
, esta atividade será adicionada ao índice no dispositivo e apresentada nos resultados da pesquisa.EligibleForPublicIndexing
– Setrue
, 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
– É umCSSearchableItemAttributeSet
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:
- Criando identificadores de tipo de atividade
- Criando uma atividade
- Respondendo a uma atividade
- Indexação de pesquisa pública
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:
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:
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:
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:
- Ao criar uma atividade para seu aplicativo, você pode marcá-la como pública.
- As atividades públicas são enviadas para a Apple e indexadas na nuvem.
- À 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.
- Os resultados públicos populares estarão disponíveis para outros usuários, mesmo que eles não tenham o aplicativo instalado.
- 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:
- 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.
- 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.