Partager via


Rechercher avec NSUserActivity dans Xamarin.iOS

NSUserActivity a été introduit dans iOS 8 et est utilisé pour fournir les données pour handoff. Il vous permet de créer des activités dans des parties spécifiques de votre application qui peuvent ensuite être transmises à une autre instance de votre application s’exécutant sur un autre appareil iOS. L’appareil de réception peut ensuite poursuivre l’activité démarrée sur l’appareil précédent, en choisissant à droite où l’utilisateur s’est arrêté. Pour plus d’informations sur l’utilisation de Handoff, consultez notre documentation Présentation de handoff .

Nouveautés d’iOS 9, NSUserActivity peuvent être indexées (publiquement et privées) et recherchées à partir de Spotlight Search et Safari. En marquant comme pouvant faire l’objet d’une NSUserActivity recherche et en ajoutant des métadonnées indexables, l’activité peut être répertoriée dans les résultats de recherche sur l’appareil iOS.

Vue d’ensemble de l’historique des applications

Si l’utilisateur sélectionne un résultat de recherche qui appartient à une activité à partir de votre application, l’application est lancée et l’activité décrite par celui-ci NSUserActivity est redémarrée et présentée à l’utilisateur.

Les propriétés NSUserActivity suivantes sont utilisées pour prendre en charge la recherche d’applications :

  • EligibleForHandoff - Si true, cette activité peut être utilisée dans une opération de transfert.
  • EligibleForSearch - Si true, cette activité sera ajoutée à l’index sur l’appareil et présentée dans les résultats de recherche.
  • EligibleForPublicIndexing : si truecette activité sera ajoutée à l’index cloud d’Apple et présentée aux utilisateurs (via la recherche) qui n’ont pas déjà installé votre application sur leur appareil iOS. Pour plus d’informations, consultez la section Indexation de recherche publique ci-dessous.
  • Title : fournit un titre pour votre activité et s’affiche dans les résultats de la recherche. Les utilisateurs peuvent également rechercher le texte du titre lui-même.
  • Keywords : tableau de chaînes utilisées pour décrire votre activité qui sera indexée et rendue pouvant faire l’objet d’une recherche par l’utilisateur final.
  • ContentAttributeSet : permet de CSSearchableItemAttributeSet décrire plus en détail votre activité et de fournir du contenu enrichi dans les résultats de recherche.
  • ExpirationDate : si vous souhaitez qu’une activité ne s’affiche qu’à une date donnée, vous pouvez fournir cette date ici.
  • WebpageURL : si l’activité peut être consultée sur le web ou si votre application prend en charge les liens profonds de Safari, vous pouvez définir le lien à visiter ici.

Démarrage rapide NSUserActivity

Suivez ces instructions pour implémenter une recherche dans NSUserActivity votre application :

Il existe des avantages supplémentaires à utiliser pour rendre votre contenu pouvant faire l’objet NSUserActivity d’une recherche.

Création d’identificateurs de type d’activité

Avant de pouvoir créer une activité de recherche, vous devez créer un identificateur de type d’activité pour l’identifier. L’identificateur de type d’activité est une chaîne courte ajoutée au NSUserActivityTypes tableau du fichier Info.plist de l’application utilisé pour identifier de manière unique un type d’activité utilisateur donné. Il y aura une entrée dans le tableau pour chaque activité que l’application prend en charge et expose à La recherche d’applications.

Apple suggère d’utiliser une notation de style DNS inversée pour l’identificateur de type d’activité afin d’éviter les collisions. Par exemple : com.company-name.appname.activity pour des activités spécifiques basées sur des applications ou com.company-name.activity pour des activités qui peuvent s’exécuter sur plusieurs applications.

L’identificateur de type d’activité est utilisé lors de la création d’une NSUserActivity instance pour identifier le type d’activité. Lorsqu’une activité est poursuivie suite au fait que l’utilisateur clique sur un résultat de recherche, le type d’activité (ainsi que l’ID d’équipe de l’application) détermine l’application à lancer pour poursuivre l’activité.

Pour créer les identificateurs de type d’activité requis pour prendre en charge ce comportement, modifiez le fichier Info.plist et basculez vers la vue Source . Ajoutez une clé et créez des NSUserActivityTypes identificateurs au format suivant :

Clé NSUserActivityTypes et identificateurs requis dans l’éditeur plist

Dans l’exemple ci-dessus, nous avons créé un nouvel identificateur de type d’activité pour l’activité de recherche (com.xamarin.platform). Lorsque vous créez vos propres applications, remplacez le contenu du tableau par les identificateurs de NSUserActivityTypes type d’activité spécifiques aux activités prises en charge par votre application.

Création d’une activité

Voici un exemple de création d’activité pour une recherche hébergée sur un index sur appareil :

// 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();

Nous pourrions ajouter d’autres détails en définissant la ContentAttributeSet propriété de notre NSUserActivity façon suivante :

Vue d’ensemble des détails de la recherche d’ajout

À l’aide d’un outil ContentAttributeSet , vous pouvez créer des résultats de recherche enrichis qui initiez l’utilisateur final à interagir avec lui.

Réponse à une activité

Pour répondre à l’utilisateur en appuyant sur un résultat de recherche (NSUserActivity) pour notre application, modifiez le fichier AppDelegate.cs et remplacez la ContinueUserActivity méthode. Par exemple :

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

Notez qu’il s’agit du remplacement de méthode utilisé pour répondre aux demandes de transfert. Maintenant, si l’utilisateur clique sur un lien à partir de notre application dans les résultats de la recherche à la une, notre application est mise au premier plan (ou démarrée si elle n’est pas déjà en cours d’exécution) et le contenu, la navigation ou la fonctionnalité représenté par ce lien s’affiche :

Restaurer l’état précédent à partir de la recherche

Indexation de recherche publique

Comme nous l’avons vu ci-dessus, iOS 9 facilite l’accès à la recherche au contenu et aux fonctionnalités de l’application que l’utilisateur a déjà découvert et utilisé sur un appareil iOS donné. Avec l’indexation publique, iOS 9 permet aux utilisateurs qui n’ont pas encore découvert de contenu ou de fonctionnalités (ou qui n’ont même pas installé l’application) d’obtenir ces résultats dans leurs recherches également.

L’indexation publique fonctionne de la manière suivante :

  1. Lorsque vous créez une activité pour votre application, vous pouvez la marquer comme publique.
  2. Les activités publiques sont envoyées à Apple et indexées dans le cloud.
  3. À mesure que d’autres utilisateurs interagissent avec votre application sur un appareil et utilisent la fonctionnalité ou le contenu spécifique représenté par l’activité, il augmente au rang.
  4. Les résultats publics populaires seront disponibles pour d’autres utilisateurs, même s’ils n’ont pas installé l’application.
  5. Ces résultats publics s’affichent dans Spotlight Search et Safari (si l’activité inclut une URL).

Nous pouvons prendre l’activité de recherche privée que nous avons créée ci-dessus et la développer pour être publique :

// 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();

Simplement parce qu’une activité a été définie pour l’indexation publique en définissant EligibleForPublicIndexing = true, cela ne signifie pas qu’elle sera automatiquement ajoutée à l’index cloud public d’Apple. Les conditions suivantes doivent d’abord être remplies :

  1. Il doit apparaître dans les résultats de recherche et être sélectionné par de nombreux utilisateurs. Les résultats restent privés jusqu’à ce qu’un seuil d’engagement d’activité ait été atteint.
  2. L’approvisionnement d’applications empêche l’indexation et le rendu public des données spécifiques à l’utilisateur.

Avantages supplémentaires

En adoptant la recherche d’applications via NSUserActivity votre application, vous obtenez également les fonctionnalités suivantes :

  • Transfert : étant donné que la recherche d’applications expose du contenu, de la navigation et/ou des fonctionnalités à l’aide du même mécanisme que handoff (NSUserActivity), vous pouvez facilement autoriser les utilisateurs de votre application à démarrer une activité sur un appareil et à le poursuivre sur un autre.
  • Suggestions Siri - Avec les suggestions standard que Siri Suggestions effectue normalement, les actifs de votre application peuvent être automatiquement suggérés.
  • Rappels intelligents Siri : les utilisateurs pourront demander à Siri de les rappeler aux activités de votre application.